等式的根
有这样一个式子
x2+S(x)∗x−n=0
x,n都是正整数, S(x)为x所有十进制数位的和
现在给你一个n,你需要找到最小的x使得等式成立。
输入格式:
输入一个整数n。(1≤n≤1018)
输出格式:
输出一个整数
如果不存在一个整数使得等式成立,输出-1
样例输入1:
110
样例输出1:
10
样例输入2:
4
样例输出2:
-1
源自XJOI,经典普及;
求大佬相助
好人一身平安!!!
#include<bits/stdc++.h>
using namespace std;
unsigned long long n;
void KYC ( )
{
bool flag = false;
for(long long i = sqrt(n); i >= 1; --i)
{
int sum = 0;
int b = i;
while(b)
{
sum += b % 10;
b /= 10;
}
if(i * i + sum * i == n)
{
flag = true;
cout << i;
break;
}
}
if(flag == false) cout << -1;
}
int main( )
{
cin >> n;
KYC ( );
return 0;
}