E.Square
数学题
题目大意
对于给定的整数 ,找到一个 ,使得存在一个整数 ,使得 是 的前 位
如果不存在这样的 ,输出
解题思路
题目给定了一个定义式:
可以将其化解为不等式:
其中 是确定的,只需遍历 对应的 ,判断即可
参考程序
void solve()
{
ll x;
cin >> x;
ll t=sqrt(x);
if(t*t==x){
cout << t << endl;
return ;
}
ll p=1;
while(1){
p*=10;//表示10^k
t=sqrt(p*x);
if(t*t<t*n) t++;
if(t>1e9){
cout << "-1" << endl;
return ;
}
if((t*t)/p==x){
cout << t << endl;
return ;
}
}
}