寒假練習——Digit Generator

題目大意:T個測試樣例,每個測試樣例給定一個數N,問:可否找到一個數加上它各個位上的數等於給定的數N。找到則輸出數據,找不到輸出0.

思路:水題,直接暴力循環,把循環數據每一位取出來再與數據求和判斷是否等於給定的數N。

細節:循環不必每次都從0開始,當N大於60時,即使6位數各個位上都是9,各個位數之和也才54。如果循環數據從N-60開始都找不到,肯定也就找不到了。因爲小於N-60時無論如何也湊不夠給定數據。

AC代碼:

#include <iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n;
        scanf("%d",&n);
        //n最大爲6位數,即使每個位上爲9,各個位之和才54
        int m=0;
        if(n>60)
            m=n-60;
        int sum=0,ans=0;
        for(int i=m;i<n;i++)
        {
            int temp=i;
            sum=i;
            while(temp)
            {
                sum+=temp%10;
                temp/=10;
            }
            if(sum==n)
            {
                ans=i;
                break;
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章