-------本人小白一枚,剛接觸程式設計不久,有什麼問題還請大家不吝賜教-------
問題描述
通過總和整數的數字找到正整數的數字根。
如果結果值是單個數字,那麼該數字就是數字根。
如果結果值包含兩個或更多數字,則將這些數字相加並重複該過程。
只要有必要獲得乙個數字,就會繼續這樣做。
例如,考慮正整數24.將2和4相加產生6的值。由於6是單個數字,因此6是24的數字根。現在考慮正整數39.將3和9相加12.由於12不是單個數字,因此必須重複該過程。
新增1和2個3,乙個數字,也是39的數字根。 輸入
輸入檔案將包含乙個正整數列表,每行乙個。
輸入的結尾將用整數值0表示。 輸出
對於輸入中的每個整數,將其數字根輸出到輸出的單獨行上。
示例輸入
24390示例輸出
63解題思路:
這道題主要包括兩個步驟
step1:將整數的各位相加,小於9直接輸出
step2:合大於9,考慮繼續迴圈計算,直到小於9,這裡用到的是兩重迴圈,具體見**
*注意*
1.輸入的整數可以很長,所以不能用int或long這種型別,在這裡需要考慮使用字串輸入,並將字串轉為數值
num += (str[i] -
'0');
2.注意題幹中要求輸入結尾為0,使用迴圈:
while
(scanf
("%s"
, str) && str[
0]!=
'0')
**1(accepted)
#include int main()
num = ans;
}printf("%d\n", num);
}return 0;
}
**2(wrong answer)
雖然這個沒有通過,但是我認為題意要表達的就是先輸入所有整數,『0』結束。
但實際上通過的卻是輸入乙個整數,輸出乙個整數的形式。(不知道是不是我**理解有誤
#include int main()
num = ans;
}result[x]=num; //將算出的結果存方到result陣列中
x++; //輸出結果的個數加一
}int i=0;
printf("運算結果如下:\n");
for(i=0;i這段**中我認為13——22行這段二重迴圈是這道題的突破點。
------------------------------------- 我是分割線 -------------------------------------------
下面是我在做後面時用了九餘數定理,想著用九餘數定理能不能更簡單地解決這道題,結果很愉快地通過了~
**:#include int main()
return 0;
}
HDU 1013九餘數定理
題目傳送門 hdu1013 九餘數定理 題目描述 給定乙個數,要求你求出它的每位上的數字之和,並且直到每位上的數字之和為個位時候輸出它 輸入 乙個整數 輸出 題目描述的結果 演算法分析 此題要用到9餘數定理。九餘數定理 乙個數對九取餘後的結果稱為九餘數。乙個數的各位數字之和相加後得到的 10的數字稱...
HDU1013 水題字串 九餘數定理
題目 輸入一串數字,把各個位上的數字相加,直到剩一位數。求那一位數。例如39,3 9 12,1 2 3,結果為3.思路 簡單的字串處理。可以用九餘數定理。九餘數定理就是乙個數對九取餘,得到的數稱之為九餘數 乙個數的九餘數等於它的各個數字上的數之和的九餘數!39對9取餘,為3.過程中12對9取餘還是3...
PAT乙級C語言1013 數素數
1013 數素數 20 分 令 p i表示第 i 個素數。現任給兩個正整數 m n 10的4次方,請輸出 pm到 pn的所有素數。輸入格式 輸入在一行中給出 m 和 n,其間以空格分隔。輸出格式 輸出從 pm到 pn的所有素數,每 10 個數字佔 1 行,其間以空格分隔,但行末不得有多餘空格。輸入樣...