Total Submission(s): 4318 Accepted Submission(s): 1382
But her teacher said "What if I ask you to give not only the sum but the square-sums of all the divisors of numbers within hexadecimal number 100?
" mmm get stuck and she's asking for your help.
Attention, because mmm has misunderstood teacher's words, you have to solve a problem that is a little bit different.
Here's the problem, given n, you are to calculate the square sums of the digits of all the divisors of n, under the base m.
n and m.(n, m would be given in 10-based)
1≤n≤109
2≤m≤16
There are less then 10 test cases.
题目:看hint都能看懂啥意思吧。就是去找因数。挺简单~
AC代码:
#include<stdio.h> #include<iostream> #include<algorithm> #include<string.h> #include<math.h> using namespace std; int bit[100]; int cnt; void change(int n,int base) { cnt=0; while(n) { bit[cnt++]=n%base; n/=base; } } int main() { int n, m; while(scanf("%d %d", &n, &m)!=EOF) { int sum=0; int t=(int)sqrt(n*1.0); for(int i = 1; i <= t; i++) { if(n%i == 0) { int tmp = i; while(tmp) { sum += ((tmp%m)*(tmp%m)); tmp /= m; } tmp = n/i; if(tmp == i)continue; while(tmp) { sum += ((tmp%m) * (tmp%m)); tmp /= m; } } } change(sum, m); for(int i = cnt-1; i >= 0; i--) { if(bit[i] > 9) printf("%c", bit[i]-10+'A'); else printf("%d", bit[i]); } putchar(10); } return 0; }
版权声明:本文博主原创文章,博客,未经同意不得转载。