有这样一个式子 x²+S(x)*x-n=0,x,n都是正整数,S(x)为x所有十进制位的和。现在给你一个n,你需要找到最小的x使等式成立。
输入格式:输入一个整数 n
输出格式:输出一个整数,如果不存在一个整数使等式成立,输出-1。
#include <iostream>
int sum(int a );
int main()
{ using namespace std;
int n,x=0,num=0;
int id=0;
std::cin >> n ;
for( x=0; x<n ;x++ )
{
num=sum(x);
if( x*x+num*x == n )
{
id=1;
cout << x <<endl;
}
}
if(id==0)
{
cout << -1 <<endl;
}
return 0;
}
int sum( int a )
{
int m=0;
while( a )
{
m+=a%10;
a=a/10;
}
return m ;
}