OpenJ_Bailian - 2764 數根(模擬)
阿新 • • 發佈:2018-11-19
數根可以通過把一個數的各個位上的數字加起來得到。如果得到的數是一位數,那麼這個數就是數根。如果結果是兩位數或者包括更多位的數字,那麼再把這些數字加起來。如此進行下去,直到得到是一位數為止。
比如,對於24來說,把2和4相加得到6,由於6是一位數,因此6是24的數根。再比如39,把3和9加起來得到12,由於12不是一位數,因此還得把1和2加起來,最後得到3,這是一個一位數,因此3是39的數根。
Input
一個正整數(小於10 1000)。
Output
一個數字,即輸入數字的數根。
Sample Input
24
Sample Output
6
解題思路:
資料範圍10^1000 所以輸入時需要考慮用字元陣列
第一次及以後每次累加的各位和就可以使用int存下了。
注意到這點其他就是模擬題意了,不斷取每位的數字並累加然後判斷是否是數根,如果小於10則說明是數根,跳出迴圈輸出結果。
AC程式碼:
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<queue> #include<stack> using namespace std; char s[1010]; int main() { while(~scanf("%s",s)) { int sum=0; int l=strlen(s); for(int i=0;i<l;i++) { sum+=s[i]-'0'; } while(sum>=10) { int m=sum; sum=0; while(m) { sum+=m%10; m/=10; } } printf("%d\n",sum); } return 0; }