第三届山西省赛1004 一道大水题(scanf)

一道大水题

时间限制: C/C++ 2000ms; Java 4000ms 内存限制: 65535KB

通过次数: 44 总提交次数: 1020

问题描述

  

        Dr. Pan作为上兰帝国ACM的总负责人,对队员的队员的训练也是日常关心,他要求每周要有一位队员出一道题目。不知过了多少年,终于轮到Shiyiliang出题了,他费尽脑汁,终于出了一道大水题

给定一个偶数n,n的取值范围为[-1e18,1e18],要求一对整数x,y满足以下条件:

     1.x*y==n

     2.x与n必须同号,即如果n>0则x>0,n<0则x<0

     3.x必须为偶数,y必须为奇数

     4.y的取值范围为(-1e18,1e18)

     5.使x的值尽可能小的情况下,y的值尽可能大

   

为了减轻队员的工作量,Dr. pan决定只要求输出y即可.

输入描述

第一行一个T(T<=100000)代表样例数。

接下来T行,每行一个数字代表题目中的n(-1e18<=n<=1e18,保证n为偶数)。

输出描述

输出T行。

每行一个数字代表题目中的y,该数字必须为奇数。

样例输入
1
12
样例输出
3
来源
第三届山西省大学生程序设计大赛
提示
 
 
赛后看了其他队的代码,确定自己被卡cin了。。果然以后不能用劳什子cin/cout加速,乖乖scanf吧T_T
 1 #include<iostream>
 2 #include<cstdio>
 3 typedef long long ll;
 4 using namespace std;
 5 ll x=1e18;
 6 int main()
 7 {
 8     int t;
 9     scanf("%d",&t);
10     while(t--)
11     {
12         ll a;
13         scanf("%lld",&a);
14         if(a<0)
15         printf("1\n");
16         else if(a>0){
17             while((a&1)==0)a>>=1;
18             printf("%lld\n",a);
19         }
20         else printf("%lld\n",x-1);
21     }return 0;
22  }

猜你喜欢

转载自www.cnblogs.com/Surprisezang/p/8996658.html