UVA-1583Digit Generator

来源:互联网 发布:优化设计 编辑:程序博客网 时间:2024/05/29 19:05
For a positive integer N, the digit-sum of N is defined as the sum of N itself and its digits. When Mis the digitsum of N, we call N a generator of M.For example, the digit-sum of 245 is 256 (= 245 + 2 + 4 + 5). Therefore, 245 is a generator of256.Not surprisingly, some numbers do not have any generators and some numbers have more than onegenerator. For example, the generators of 216 are 198 and 207.You are to write a program to find the smallest generator of the given integer.InputYour program is to read from standard input. The input consists of T test cases. The number of testcases T is given in the first line of the input. Each test case takes one line containing an integer N,1 ≤ N ≤ 100, 000.OutputYour program is to write to standard output. Print exactly one line for each test case. The line is tocontain a generator of N for each test case. If N has multiple generators, print the smallest. If N doesnot have any generators, print ‘0’.Sample Input32161212005Sample Output19801979
#include <iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int digit(int n);int main(){    int i;    int a[100045]={0};    int s;    for(i=1;i<=100000;i++)    {        s=digit(i);        if(a[s]>0)        {            if(s<a[s])                a[s]=i;        }        else            a[s]=i;    }    int t,n;    scanf("%d",&t);    while(t--)    {        scanf("%d",&n);        printf("%d\n",a[n]);    }    return 0;}int digit(int n){    int s=0;    s+=n;    while(n>=10)    {        s+=n%10;        n=n/10;    }    return s+n;}

原创粉丝点击