HDU 1013 Digital Roots(九余數定理)
阿新 • • 發佈:2017-09-09
cnblogs %d strong har esc roc title != ota
For example, consider the positive integer 24. Adding the 2 and the 4 yields a value of 6. Since 6 is a single digit, 6 is the digital root of 24. Now consider the positive integer 39. Adding the 3 and the 9 yields 12. Since 12 is not a single digit, the process must be repeated. Adding the 1 and the 2 yeilds 3, a single digit and also the digital root of 39.
Input
The
input file will contain a list of positive integers, one per line. The
end of the input will be indicated by an integer value of zero.
Source
Greater New York 2000
Digital Roots
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 80782 Accepted Submission(s): 25278
For example, consider the positive integer 24. Adding the 2 and the 4 yields a value of 6. Since 6 is a single digit, 6 is the digital root of 24. Now consider the positive integer 39. Adding the 3 and the 9 yields 12. Since 12 is not a single digit, the process must be repeated. Adding the 1 and the 2 yeilds 3, a single digit and also the digital root of 39.
Output For each integer in the input, output its digital root on a separate line of the output.
Sample Input 24 39 0
Sample Output 6 3
Recommend We have carefully selected several similar problems for you: 1017 1021 1012 1048 1016 分析:最後得到的結果有九種可能性 1-9,當數n<10時,n%9余數為0的時候對應9,其余的余數和最終結果相同 如果n>=10 那麽 數根也會和呈現出1-9的循環,把余數0看作9的話,則余數呈現對應的1-9循環 那麽求出余數即可 代碼如下:
#include <cstdio> #include <algorithm> #include<cstring> using namespace std; char a[20100]; int main() { int n,sum; while(scanf("%s",a)!=EOF) { if(strlen(a)==1&&a[0]==‘0‘)break; sum=0; for(int i=0;i<strlen(a);i++) sum+=a[i]-‘0‘; sum=sum%9; if(sum==0)puts("9"); else printf("%d\n",sum); } return 0; }
HDU 1013 Digital Roots(九余數定理)