UVa 1583 Digit Generator(数学)

系统 1544 0


题意 假设a加上a全部数位上的数等于b时 a称为b的 generator  求给定数的最小 generator 

给的数n是小于100,000的  考虑到全部数位和最大的数99,999的数位和也才45  因此我们仅仅须要从n-45到n枚举即可了


      #include<cstdio>  
#include<cstring>  
using namespace std;  
int t, n, a, b, ans, l;  
int main()  
{  
    scanf ("%d", &t);  
    while (t--)  
    {  
        scanf ("%d", &n);  
        ans = 0;  
        for (int i = n-50; i < n; ++i)  
        {  
            a = b = i;  
            while (b)  
            {  
                a += b % 10;  
                b /= 10;  
            }  
            if (a + b == n)  
            {  
                ans = i;  
                break;  
            }  
        }  
        printf ("%d\n", ans);  
    }  
    return 0;  
} 
    

For a positive integer  N  , the digit-sum of  N  is defined as the sum of  N  itself and its digits. When  M  is 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 of  256 .

Not surprisingly, some numbers do not have any generators and some numbers have more than one generator. 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.

Input  

Your program is to read from standard input. The input consists of  T  test cases. The number of test cases  T  is given in the first line of the input. Each test case takes one line containing an integer  N  ,  1 N 100, 000  .

Output  

Your program is to write to standard output. Print exactly one line for each test case. The line is to contain a generator of  N  for each test case. If  N  has multiple generators, print the smallest. If  N  does not have any generators, print  0 .

The following shows sample input and output for three test cases.

Sample Input  

      3 
216 
121 
2005

    

Sample Output  

      198 
0 
1979
    



UVa 1583 Digit Generator(数学)


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论