zoukankan      html  css  js  c++  java
  • 最大最小公倍数

      算法训练 最大最小公倍数  
    时间限制:1.0s   内存限制:256.0MB
          
    问题描述

    已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。

    输入格式

    输入一个正整数N。

    输出格式
    输出一个整数,表示你找到的最小公倍数。
    样例输入
    9
    样例输出
    504
    数据规模与约定

    1 <= N <= 106

    有一个定理  相邻两个数的最小公倍数等于这两个数的乘积,这个题我们要求最大   但是三位数就要分类别啦,
    整体思路 找三个相对连续的 没有公因数的数, 看最后一个数是奇数,,还是偶数。 奇数的话 最后三位肯定是 奇
    -偶-奇。不可能有公因数。 偶数的话 最后三位是 偶-奇-偶, 第一种 最后一个偶数能被三整除 那么n-2,也肯定被三整除,有公因数三 最后要除以3,,这样就没有 用n-1*n-2*n-3大啦。其实也变成了奇-偶-奇的格式 第二中 最后一个偶数不能被三整除 那么N与N-2肯定有公因数2,这样不是最大,所以把N-2去掉。加个 N-3;这样就变成了偶-奇-奇的形式; #include<stdio.h> int main() { long long n,ans; scanf("%I64d",&n); if(n<=2) ans=n; else if(n%2==1) ans=n*(n-1)*(n-2); else { if(n%3==0) ans=(n-1)*(n-2)*(n-3); else ans=n*(n-1)*(n-3); } printf("%I64d",ans); return 0; }

     

     

  • 相关阅读:
    1.第一个java程序
    5.第三章 运算符和基本选择结构
    7.关系运算符
    4.第二章章末总结
    3.计算员工工资
    JAVA并发操作——Thread常见用法(Sleep,yield,后台线程)
    JAVA 对象序列化(一)——Serializable
    JAVA 线程中的异常捕获
    JAVA反射机制实例
    JAVA 对象序列化(二)——Externalizable
  • 原文地址:https://www.cnblogs.com/zhangjiaqi123/p/6180476.html
Copyright © 2011-2022 走看看