zoukankan      html  css  js  c++  java
  • 51nod 1419 最小公倍数挑战

    【题解】  

      我们可以很快发现当n是奇数的时候答案就是n*(n-1)*(n-2),因为这三个数一定两两互质,因为它们中只有n-1是2的倍数,而其它数的倍数的周期都比3长,所以也不可能有别的大于2的公因数。当n是偶数的时候怎么办呢?当n不是3的倍数的时候答案是n*(n-1)*(n-3),这里避开(n-2)是因为它与n有公因数2使得公倍数较小,而n,n-1,n-3三个数一定互质且乘积最大。当n是3的倍数的时候答案是(n-1)*(n-2)*(n-3),因为当n%3=0时n与n-3有公因数3,我们要避开n与(n-2),以及n与(n-3).

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 #define N 200010
     5 #define rg register
     6 #define LL unsigned long long 
     7 using namespace std;
     8 int n;
     9 inline int read(){
    10     int k=0,f=1; char c=getchar();
    11     while(c<'0'||c>'9')c=='-'&&(f=-1),c=getchar();
    12     while('0'<=c&&c<='9')k=k*10+c-'0',c=getchar();
    13     return k*f;
    14 }
    15 int main(){
    16     n=read();
    17     if(n<=2) printf("%d
    ",max(0,n));
    18     else{
    19         if(n&1) printf("%lld
    ",1ll*n*(n-1)*(n-2));
    20         else
    21             if(n%3) printf("%lld
    ",1ll*n*(n-1)*(n-3));
    22             else printf("%lld
    ",1ll*(n-1)*(n-2)*(n-3));
    23     }
    24     return 0;
    25 }
    View Code
  • 相关阅读:
    linux之uniq
    shell之sort
    tr命令的使用
    AWK 简明教程
    Word Frequency
    10亿个数中选出最大的100个数
    代理模式(也称委托模式)
    java内存相关
    Two Sum
    Java的集合
  • 原文地址:https://www.cnblogs.com/DriverLao/p/9600252.html
Copyright © 2011-2022 走看看