Uva

来源:互联网 发布:避免软件破解 编辑:程序博客网 时间:2024/05/18 01:35


开始看这个题并不是很难,打算自己做,但最后总是RunTime Error,最终也没搞清楚哪里错,只好乖乖按照课本上做,委屈╥﹏╥...

RE代码:

#include <iostream>#include <cmath>using namespace std;int mm(int n){    int sum = 0;    for(int i = 1; ; i++)    {        sum += (n % 10);        n = n / 10;        if(n == 0)            break;    }    return sum;}int main(){    int n;    while(cin>>n)    {        while(n--)        {            int m, flag = 1;            cin>>m;            for(int i = 1; i < m; i++)            {                if(mm(i) + i == m)                {                    flag = 0;                    cout<<i<<endl;                    break;                }            }            if(flag == 1)            {                cout<<0<<endl;            }        }    }    return 0;}
AC代码:

#include <cstdio>#include <cstring>#define maxn 100005int ans[maxn];int main(){    int T, n;    memset(ans, 0, sizeof(ans));    for(int i = 1; i < maxn; i++)    {        int x = i, y = i;        while(x > 0)        {            y += x % 10;            x /= 10;        }        if(ans[y] == 0 || i < ans[y])            ans[y] = i;    }    scanf("%d",&T);    while(T--)    {        scanf("%d",&n);        printf("%d\n",ans[n]);    }    return 0;}


0 0