1 solutions
-
0
C++ :
//384K 0MS #include<stdio.h> #include<math.h> int gcd(int a,int b) { if(!b)return a; return gcd(b,a%b); } int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int c,s; while(scanf("%d%d",&c,&s)!=EOF) { int sum=0; for(int i=1;i<=s;i++) { int tmp=gcd(s,i);//第i次旋转的循环节数 sum+=(int)(pow(c*1.0,tmp*1.0)); } if(s&1)sum+=(int)(s*pow(c*1.0,(s+1)/2.0));//s为奇数,共有s个循环节数均为(s+1)/2的置换 else//当s为偶数 { sum+=(int)((s/2)*pow(c*1.0,(s+2)/2.0));//第一种循环节数均为(s+2)/2 sum+=(int)((s/2)*pow(c*1.0,s/2.0));//第二种循环节数均为s/2 } sum/=(2*s); printf("%d\n",sum); } return 0; }
- 1
Information
- ID
- 20163
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By