題目大意:T個測試樣例,每個測試樣例給定一個數N,問:可否找到一個數加上它各個位上的數等於給定的數N。找到則輸出數據,找不到輸出0.
思路:水題,直接暴力循環,把循環數據每一位取出來再與數據求和判斷是否等於給定的數N。
細節:循環不必每次都從0開始,當N大於60時,即使6位數各個位上都是9,各個位數之和也才54。如果循環數據從N-60開始都找不到,肯定也就找不到了。因爲小於N-60時無論如何也湊不夠給定數據。
AC代碼:
#include <iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
//n最大爲6位數,即使每個位上爲9,各個位之和才54
int m=0;
if(n>60)
m=n-60;
int sum=0,ans=0;
for(int i=m;i<n;i++)
{
int temp=i;
sum=i;
while(temp)
{
sum+=temp%10;
temp/=10;
}
if(sum==n)
{
ans=i;
break;
}
}
printf("%d\n",ans);
}
return 0;
}