HDU 1163 Eddy's digital Roots(九餘數定理)
阿新 • • 發佈:2019-01-27
九餘數定理:
一個數對九取餘後的結果稱為九餘數。
一個數的各位數字之和相加後得到的<10的數字稱為這個數的九餘數(如果相加結果大於9,則繼續各位相加。
#include <iostream> #include <cstdio> using namespace std; /**九餘數定理 一個數對九取餘後的結果稱為九餘數。 一個數的各位數字之和相加後得到的<10的數字稱為這個數的九餘數(如果相加結果大於9,則繼續各位相加 **/ int pow_mod(int a ,int n,int m) { if(n == 0) return 1; int x = pow_mod(a,n / 2,m); long long ans = (long long)x * x % m; if(n%2 == 1) ans = ans *a % m; return (int)ans; } int main() { int n, m, res; while(scanf("%d", &n) != EOF && n) { res = pow_mod(n, n, 9); if(res) printf("%d\n", res); else printf("9\n"); } return 0; }