题意:与2409类似,只是只能有3种颜色。
分析:详见2409,注意输入0的情况。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
#include#include #include #include #include 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;}