水题-------判断Digit Generator

题目链接:https://vjudge.net/problem/UVA-1583

题意:给出一个数N,判断最小的数x使x+(x各位数字的和)=N

题解:这是一个暴力求解题,不过有技巧,x各位数字的和最多是9*位数,所以循环从N-位数*9开始循环即可

ac代码:

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    int n,m,k,ans;
    cin>>n;
    for(int k=0; k<n; k++)
    {
        cin>>m;
        int i,sum,mm=m,wei=0,flag=1;
        while(mm!=0)
        {
            wei+=1;
            mm/=10;
        }
        for(i=m-wei*9-1; i<m; i++)
        {
            int j=i;
            sum=0;
            while(j!=0)
            {
                sum+=j%10;
                j/=10;
            }
            if(sum+i==m)
            {
                flag=0;
                break;
            }
        }
        if(flag==0)
            cout<<i<<endl;
        else
            cout<<"0"<<endl;
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/Joe2019/p/12660341.html