第三题:T3数根(二)
标签:高精度除法
题意:给定一个正整数
n
n
n,定义一个数字的根为它的十进制数字之和,例如
1234
1234
1234的数根为
1
+
2
+
3
+
4
1+2+3+4
1+2+3+4,请判定
n
n
n的数根能否整除
n
n
n。(
1
<
=
n
<
=
1
0
100000
1<=n<=10^{100000}
1<=n<=10100000)
题解:高精度数以字符串形式输入,先求数根,最坏情况
99999
99999
99999位都是
9
9
9,显然数根是个低精度数。所以题目就转换成高精度数除于低精度数题目,最终看下取模的余数是否为
0
0
0,判断下能否整除即可。
代码:
#include <bits/stdc++.h>
using namespace std;
int main() {
int m = 0, k = 0;
string s;
cin >> s;
for (int i = 0; i < s.size(); i++) {
m += (s[i] - '0');
}
for (int i = 0; i < s.size(); i++) {
k = 10 * k + (s[i] - '0');
k %= m;
}
if (k > 0) cout << "No";
else cout << "Yes";
return 0;
}