一道大水题
时间限制: 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
#include<iostream>
#include<cstdio>
typedef long long ll;
using namespace std;
ll x=1e18;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
ll a;
scanf("%lld",&a);
if(a<)
printf("1\n");
else if(a>){
while((a&)==)a>>=;
printf("%lld\n",a);
}
else printf("%lld\n",x-);
}return ;
}