zoukankan      html  css  js  c++  java
  • The Unsolvable Problem

    The Unsolvable Problem

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

    题意:

    给定一个整数n(2 < = x < = 10^9),我们应该找到一双正整数a,b,满足a + b = n和a,b的最小公倍数是尽可能大;

    输出这个最大的最小公倍数。

    题目要求要T组案例。

    案例:

    Sampl Input

    3

    2

    3

    4

    Sample Output

    1

    2

    3

    解题思路:

       由于2<=x<=10^9数据太大如果用从1开始一一枚举的方法会超时;

    分析会发现a,b越接近x/2,它们的最小公倍数最大。

    判断n是奇数还是偶数,如果是奇数就输出x/2*x/2+1,

    如果是偶数在进行判断,如果x==2输出1,

    如果x/2是偶数输出x/2-1*x/2+1;

    否则输出 x/2—2*x/2+2。

     1 #include<iostream>
     2 using namespace std;
     3 int main()
     4 {
     5 int t;
     6 cin>>t;
     7 while(t--)
     8 {
     9 long long x;
    10 cin>>x;
    11 if(x==2)   
    12  cout<<1<<endl;
    13        else if(x%2==1)
    14    cout<<(x/2)*(x/2+1)<<endl;
    15        else if((x/2)%2==1)
    16             cout<<(x/2-2)*(x/2+2)<<endl;
    17        else           
    18            cout<<(x/2-1)*(x/2+1)<<endl; 
    19     }
    20 return 0;
    21 }
  • 相关阅读:
    第四次作业
    第三次
    第十次作业
    第九次作业
    第八次作业
    10.29第七次
    15
    14
    13 this
    12 电视机
  • 原文地址:https://www.cnblogs.com/fenhong/p/4654968.html
Copyright © 2011-2022 走看看