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

    题目链接:http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=45783

    题意:

         输入一个数n,而a+b=n,[a,b]表示为a,b的最小公倍数,而需要输出的是所有a,b最小公倍数中最大的数。

         案例:

         input

         3

         2

         3

         4

         output

         1

         2

         3

    题目分析:

          两个相近的奇数一定没有公约数,所以找最小公倍数中最大的数,要找离某数的二分之一最近的两个没有公约数的数。

           当n为奇数时,两个数为n/2,n/2+1;

           当n为偶数时,又分为两种情况:

                   当n/2为奇数时,两个数为n/2+2,n/2-2;

                   当n/2为偶数时,两个数为n/2+1,n/2-1;

           但是,还需注意当n==2时,用上述方法得到负数,所以当n==2时,输出"1",当n!=2时,再用上述方法。

    源代码如下:

           

     1 #include<iostream>
     2 using namespace std;
     3 int main()
     4 {
     5     int T;
     6     cin>>T;
     7     for(int i=0;i<T;i++)
     8     {
     9         long long n;     //n必须为long long 型
    10         cin>>n;
    11         if(n==2)cout<<"1"<<endl;
    12         else if(n%2==0)
    13         {
    14             if(n/2%2==0)
    15                 cout<<(n/2-1)*(n/2+1)<<endl;
    16             else
    17                 cout<<(n/2+2)*(n/2-2)<<endl;
    18         }
    19         else
    20             cout<<n/2*(n/2+1)<<endl;
    21     }
    22     return 0;
    23 }

         

  • 相关阅读:
    Linux服务器程序规范化
    Linux I/O函数
    IP协议详解
    Linux C++ 连接 MySQL
    I/O复用
    Linux网络编程基础API
    TCP协议详解
    React源码解携(二): 走一趟render流程
    记账项目 webpack优化
    前端监控系统博客总结
  • 原文地址:https://www.cnblogs.com/q-c-y/p/4655119.html
Copyright © 2011-2022 走看看