博客咁耐毋更新,發覺似乎無乜嘢可以分享,既然博客都係寫俾自己睇,隨便發D做水題嘅日誌嚟填充博客= =
Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.
For example:
Given num = 38, the process is like: 3 + 8 = 11, 1 + 1 = 2. Since 2 has only one digit, return it.
Follow up:
Could you do it without any loop/recursion in O(1) runtime?
不能用循環?先寫個用循環的列出幾個結果,再從中搵規律。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#include <iostream> using namespace std; int main() { int n,a; cin>>n; while (n>9) { a=0; while (n) { a+=n%10; n/=10; } n=a; } cout<<n; return 0; } |
得到examples:
input / output
33 6
34 7
35 8
36 9
37 1
38 2
39 3
40 4
41 5
42 6
43 7
44 8
45 9
46 1
呃,看起來還是很有規律的。。。。於是得出 output = (input - 1) mod 9 + 1 (其實我都唔知點搞出嚟嘅)
於是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <iostream> using namespace std; int main() { int n,a; cin>>n; if (n==0) a=0; else a=(n-1)%9+1; cout<<a; return 0; } |
我也想了解,请大家都说说