题意:与2409类似,只是只能有3种颜色。
分析:详见2409,注意输入0的情况。
View Code
#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> using namespace std; int n, m; int gcd(int a, int b) { b = b % a; while (b) { a = a % b; swap(a, b); } return a; } int main() { //freopen("t.txt", "r", stdin); n = 3; while (scanf("%d", &m), ~m) { if (m == 0) { printf("0\n"); continue; } long long ans = 0; for (int i = 1; i <= m; i++) ans += pow(n, gcd(i, m)); if (m & 1) ans += m * pow(n, m / 2 + 1); else ans += m / 2 * pow(n, m / 2) + m / 2 * pow(n, m / 2 + 1); ans /= m * 2; printf("%lld\n", ans); } return 0; }