6020: 机智的AmyZhi
时间限制: 1 Sec 内存限制: 128 MB提交: 194 解决: 72
[ 提交][ 状态][ 讨论版][命题人: admin]
题目描述
那年一个雨季,AmyZhi在校门外弯身买参考书。
这时SiriusRen走过来,一言不合甩给她一道(自认为)很难的题
给你一个数字N,求一个最小的正整数M,这个数字M的各个位的数字加上它本身之和恰好为N。
没有想到AmyZhi秒解了这道题 并把N扩大到了10^18 甩回给了SiriusRen
SiriusRen苦苦思索,发现并不会这道题
可怜SiriusRen一世英名,在AmyZhi面前却宛如智障少年
SiriusRen抬头透过倾斜的雨丝,看向模糊的世界,车水马龙,穿流不息,人来人往,形色匆匆,刹那间惘然,竟不知去向何方……
这时SiriusRen走过来,一言不合甩给她一道(自认为)很难的题
给你一个数字N,求一个最小的正整数M,这个数字M的各个位的数字加上它本身之和恰好为N。
没有想到AmyZhi秒解了这道题 并把N扩大到了10^18 甩回给了SiriusRen
SiriusRen苦苦思索,发现并不会这道题
可怜SiriusRen一世英名,在AmyZhi面前却宛如智障少年
SiriusRen抬头透过倾斜的雨丝,看向模糊的世界,车水马龙,穿流不息,人来人往,形色匆匆,刹那间惘然,竟不知去向何方……
输入
第一行一个整数T,表示有T组数据。
接下来T行每行一个整数N。
接下来T行每行一个整数N。
输出
对于每组数据,输出M。
若无解,输出“Stupid SiriusRen”
若无解,输出“Stupid SiriusRen”
样例输入
3
216
121
2005
样例输出
198
Stupid SiriusRen
1979
提示
对于20%的数据 N<=1000,T<=1000
对于40%的数据 N<=100000,T<=5
对于60%的数据 N<=100000,T<=5000
对于100%的数据 N<=1018,T<=50000
来源
乍一看,数据量太大,大数?。。。不不不,仔细读题,我们枚举的仅仅是从n-9×(n有多少位)到n, 十分简单的思维题
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
using namespace std;
int main()
{
int t, flag;
long long n, ans;
scanf("%d", &t);
while(t--)
{
ans=0; flag=0;
scanf("%lld", &n);
int x=(int)log10((double)n)+1;
for(long long i=n-9*x;i<n;i++)
{
long long sum=i, temp=i;
while(temp)
{
sum+=temp%10;
temp/=10;
}
if(sum==n)
{
flag=1;
ans=i;
break;
}
}
if(flag)
printf("%lld\n", ans);
else
printf("Stupid SiriusRen\n");
}
return 0;
}
/**************************************************************
Problem: 6020
User: ldu_reserver201701
Language: C++
Result: 正确
Time:552 ms
Memory:1204 kb
****************************************************************/