試題 演算法訓練 最大最小公倍數 C

2021-10-08 12:16:17 字數 956 閱讀 1297

看到這個題上來就不會,以為是求最小公倍數,但實際上是考慮三個互質的數的乘積

因為範圍是任選的所以要考慮兩種情況

當輸入的這個數是奇數比如 9

1 2 3 4 5 6 7 8 9

這麼一看肯定7 8 9 的最小公倍數是最大的,直接相乘,規律就是n*(n-1)(n-2)

當輸入的這個是偶數比如10

1 2 3 4 5 6 7 8 9 10

8 9 10 這時候是兩個偶數,肯定要變啊變誰好呢,變成啥樣啊,當然要往互質的方向變!

啥樣的三個數的組合才互質

任意兩個不能除開2和3。

那就是那就照著上一種情況變唄,上一種情況是啥情況啊,奇偶奇

這個規律都是圍繞著你輸入的n變得這一看就是7 9 10

那就是 n(n-1)(n-3)

但問題就來了

你要是12的話 10 11 12

變成 9 10 12 這都能除開三啊

就特殊情況特殊處理唄,來個if(n%3==0)改不了小的偶數,就改大的,n本身。(n-1)(n-2)(n-3)

這個題的條件

資源限制

時間限制:1.0s 記憶體限制:256.0mb

問題描述

已知乙個正整數n,問從1~n中任選出三個數,他們的最小公倍數最大可以為多少。

輸入格式

輸入乙個正整數n。

輸出格式

輸出乙個整數,表示你找到的最小公倍數。

樣例輸入

9樣例輸出

504資料規模與約定

1 <= n <= 106。

所以n 用long long int型,要是輸入1或2,那就直接返回n

**如下:

#includeusing namespace std;

int main()

else cout<}

return 0;

}

試題 演算法訓練 最大最小公倍數

資源限制時間限制 1.0s 記憶體限制 256.0mb 問題描述 已知乙個正整數n,問從1 n中任選出三個數,他們的最小公倍數最大可以為多少。輸入格式 輸入乙個正整數n。輸出格式 輸出乙個整數,表示你找到的最小公倍數。樣例輸入 9樣例輸出 504資料規模與約定 1 n 106。做題思路 找三個最大的...

最大最小公倍數 演算法訓練

時間限制 1.0s 記憶體限制 256.0mb 問題描述 已知乙個正整數n,問從1 n中任選出三個數,他們的最小公倍數最大可以為多少。輸入格式 輸入乙個正整數n。輸出格式 輸出乙個整數,表示你找到的最小公倍數。樣例輸入 9樣例輸出 504資料規模與約定 1 n 106。找最大的三個兩兩互質的數,大於...

演算法訓練 最大最小公倍數

問題描述 已知乙個正整數n,問從1 n中任選出三個數,他們的最小公倍數最大可以為多少。輸入格式 輸入乙個正整數n。輸出格式 輸出乙個整數,表示你找到的最小公倍數。樣例輸入 9 樣例輸出 504資料規模與約定 1 n 106。很水的一道題,想通如果是偶數的情況就搞定了,另外要注意下資料很大,需要lon...