//这一题如果逐一枚举,就会超时!所以需要对一些不符合情况的数进行删除!
#include "iostream"
#include "math.h"
using namespace std;
int main()
{
int T;
cin >> T;
int *a = new int[T];
for (int i = 0; i < T; i++)
{
cin >> a[i];
int count = 0, temp = a[i];
while (temp > 0)//计算出输入的数字的位数
{
temp /= 10;
count++;
}
int n = a[i] - count * 10;//一个generator数与原数相差最大不过它的位数乘以10!这个需要找规律才可以发现!
while (n < a[i])//逐渐枚举出符合条件的数
{
int m = n;
int sum = 0;
while (n > 0)
{
sum += n % 10;
n = n / 10;
}
sum += m;
if (sum == a[i])
{
cout << m << endl;
break;
}
n = m + 1;
if (n == a[i])
cout << "0" << endl;
}
}
}
sicily 1325
最新推荐文章于 2016-01-07 01:18:13 发布