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
  • 相关阅读:
    【js】右下角浮动窗口
    malefile
    跟我一起学习VIM
    Linux服务器开发初步
    如何学习Linux
    什么是Java序列化?如何实现序列化?
    java微信工众号开发
    史上最全最强SpringMVC详细示例实战教程
    Hibernate注解方法使用总结
    Hibernate注解
  • 原文地址:https://www.cnblogs.com/DriverLao/p/9600252.html
Copyright © 2011-2022 走看看