abs
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 808 Accepted Submission(s): 293
Problem Description
Given a number x, ask positive integer
y≥2
, that satisfy the following conditions:
1. The absolute value of y - x is minimal
2. To prime factors decomposition of Y, every element factor appears two times exactly.
1. The absolute value of y - x is minimal
2. To prime factors decomposition of Y, every element factor appears two times exactly.
Input
The first line of input is an integer T (
1≤T≤50
)
For each test case,the single line contains, an integer x ( 1≤x≤1018 )
For each test case,the single line contains, an integer x ( 1≤x≤1018 )
Output
#include<cstdio>
For each testcase print the absolute value of y - x
Sample Input
5 1112 4290 8716 9957 9095
Sample Output
23 65 67 244 70
Source
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<iostream>
const long long INF=0x7fffffffffffffll;
using namespace std;
long long ans;
long long n;
bool work(long long x)
{
if(x<2)
{
return false;
}
long long t=x;
for(long long i=2;i*i<=x;i++)
{
if(x%i==0)
{
if(x%(i*i)==0)
{
return false;
}
x/=i;
}
}
// cout<<abs(t*t-n)<<endl;
ans=min(ans,abs(t*t-n));
return true;
}
int main()
{
int t;
cin>>t;
while(t--)
{
scanf("%lld",&n);
long long x=(long long)(sqrt(n)+0.5);
cout<<sqrt(n)<<endl;
cout<<x<<endl;
long long oo=(long long)(sqrt(n));
cout<<oo<<endl;
int flag=0;
ans=INF;
for(int i=0;;i++)
{
if(work(x+i))
flag=1;
if(work(x-i))
{
flag=1;
}
if(flag==1)
break;
}
// printf("%lld\n",ans);
}
return 0;
}