HustOJ 最大最小公倍數 (思維水題)
阿新 • • 發佈:2018-12-16
開始拿到這道題想的有點複雜了, 簡單來想, 為了使得最大LCM最大, 我們應該從N開始往下找, 找到三個最大的互質的數就好了
這個地方牽扯到數論中的一點兒基礎知識, 很簡單的知識
1. 互質數: 兩個數的最大公約數是1的時候稱為互質數
2. 相鄰的兩個自然數是互質數。如 15與 16。
3. 相鄰的兩個奇數是互質數。如 49與 51。
這時候分類討論一下小於三和奇數, 偶數的情況就好了.
奇數直接取n, n-1, n-2, 偶數就再多判斷一下能不能被3餘的情況
#include<stdio.h> int main() { long long N; long long answer; while(scanf("%lld",&N)!=EOF){ if(N<=2) answer = N; else if(N==3) answer = 6; else if(N%2==1) answer = N*(N-1)*(N-2); else{ if(N%3==1 || N%3==2) answer = N*(N-1)*(N-3); else answer = (N-3)*(N-1)*(N-2); } printf("%lld\n",answer); } }