标签:sea form define field NPU ret The lse 翻转
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 9655 | Accepted: 3968 |
Description

Input
Output
Sample Input
4 5 -1
Sample Output
21 39
Source
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
#define LL long long
LL gcd(LL a, LL b){
return b == 0 ? a : gcd(b, a % b);
}
int main(){
LL n, sum = 0;
while(cin >> n && n != -1){
if(n == 0){
cout << 0 << endl;
continue;
}
//旋转变换
//n种置换,步长为x的置换的循环节有GCD(x,n)个
for(int i = 1; i <= n; i++){
sum += pow(3, gcd(i, n));
}
//翻转变换:要分奇偶
if(n & 1){
sum += n * pow(3, (n - 1) / 2 + 1);
}
else{
sum += n/2 * pow(3, (n - 2) / 2 + 2); //按两个点翻转
sum += n/2 * pow(3, n / 2); //按边翻转
}
sum /= 2 * n; //除以G:总的置换个数
cout << sum << endl;
sum = 0;
}
}
标签:sea form define field NPU ret The lse 翻转
原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/9532316.html