标签: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