Description
Input
-1 denotes the end of the input file.
Output
Sample Input
4 5 -1
Sample Output
21 39
Source
#include<stdio.h>
#include<math.h>
int gcd(int a, int b) {
if (!b)
return a;
return gcd(b, a % b);
}
void polya(int n) {
double sum = 0.0;
if (n) {
for (int i = 0; i < n; i++)
sum += pow(3.0, gcd(i, n));
if (n % 2)
for (int i = 0; i < n; i++)
sum += pow(3.0, n / 2 + 1);
else
for (int i = 0; i < n / 2; i++)
sum += pow(3.0, n / 2) + pow(3.0, n / 2 + 1);
sum /= 2 * n;
}
printf("%.0lf\n", sum);
}
int main(void) {
int n;
while (scanf("%d", &n), n + 1) {
polya(n);
}
return 0;
}
2万+



被折叠的 条评论
为什么被折叠?



