CCF NOI1035 數根
阿新 • • 發佈:2019-01-03
時間限制:
1000 ms 空間限制: 262144 KB
題目描述
數根是這樣定義的:對於一個正整數n,將它的各個數位上的數字相加得到一個新數,如果這個數是一位數,我們就稱之為n的數根,否則重複處理直到它成為一個一位數。
例如,n=34,3+4=7,7是一位數,所以7是34的數根。
再如,n=345,3+4+5=12,1+2=3,3是一位數,所以3是345的數根。
對於輸入數字n,程式設計計算它的數根。
輸入
輸入正整數n。
輸出
輸出n的數根。
樣例輸入
345
樣例輸出
3
資料範圍限制1<=n<2^31
問題分析
這是一個計算數根的問題。
人們通常使用10進位制,對於一個10進位制整數,用除數10除(/)和取餘數(%)運算是常用的運算。這兩個運算分別是10進位制右移一位運算和取個位數運算,程式中運用十分廣泛。
程式說明
函式numberroot()封裝了計算一個數的數根的功能。
100分通過的C語言程式:
#include <stdio.h> #define BASE 10 int numberroot(int n) { int temp; while(n >= BASE) { temp = n; n = 0; while(temp) { n += temp % BASE; temp /= BASE; } } return n; } int main(void) { int n; scanf("%d", &n); printf("%d\n", numberroot(n)); return 0; }