HDU 1013 Digital Roots 大数水题

    xiaoxiao2026-08-15  8

        题意是说给你一个数,把这个数的所有位上的数字加起来(个位+十位+......),如果加起来大于10就继续拆分开加,一直加到小于10,输出这个数。感觉好像小时候玩的游戏= =,好吧,说正题,一道水题,不过还没简单到int直接过,这属于一个大数处理的问题,还是要用字符串读入,然后拆开一位一位加。

       没什么好说的= =下面代码

    #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int main() { char s[1005]; int i; long long sum,t; int len; while(scanf("%s",s)!=EOF) { if(strcmp(s,"0")==0) break; sum=0; len=strlen(s); for(i=0;i<len;i++) { sum=sum+(s[i]-'0'); if(sum>=10) { t=sum; sum=0; while(t>0) { sum=sum+(t%10); t=t/10; if(sum>=10) { t=sum; sum=0; } } } } cout<<sum<<endl; } return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-1311207.html
    最新回复(0)