51 Nod 1419 最小公倍數挑戰
阿新 • • 發佈:2017-10-25
數據 數字 click div blog logs ref .html ext 1419 最小公倍數挑戰
幾天以前,我學習了最小公倍數。玩得挺久了,想換換口味。
我不想用太多的數字,我想從1到n中選三個數字(可以相同)。使得他們的最小公倍數最大。
Input單組測試數據。
第一行有一個整數n (1≤n≤1,000,000)。
Output
輸出一個整數表示選三個數字的最大的最小公倍數。
Input示例
9
7
Output示例
504
210
思路:任意的兩個相鄰自然數肯定互質 任意兩個相鄰的奇數肯定互質
當 n 為奇數時 n 和 n-1肯定互質 n-1 和 n-2 肯定互質 n 和 n-2 也互質
所以 LCM 為 n*(n-1)*(-2)
當 n 為 偶數時 n 和 n-1 肯定互質 考慮 和 n-3 的關系 如果和 n-3 也互質的話 LCM 就是 n*(n-1)*(n-3)
如果 和 n-3 不互質 只能 將 n 向後移一位 否則 LCM不是最大 這時候輸出 (n-1)*(n-2)*(n-3)
1 #include <cstdio> 2 #include <cctype> 3 4 typedef unsigned long long LL; 5 6 LL n; 7 8 int hh() {代碼9 scanf("%lld",&n); 10 11 if(n<=2) { 12 printf("%lld\n",n); 13 return 0; 14 } 15 16 if(n&1) printf("%lld\n",(LL)n*(n-1)*(n-2)); 17 else { 18 if(n%3==0) printf("%lld\n",(LL)(n-1)*(n-2)*(n-3)); 19 else printf("%lld\n",(LL)n*(n-1)*(n-3)); 20 } 21 22 return 0; 23 } 24 25 int sb=hh(); 26 int main(int argc,char**argv) {;}
51 Nod 1419 最小公倍數挑戰