题目描述
人生三大幻觉是手机在震动、有人叫你、还有Ta喜欢你。可是这第三条幻觉偏偏就真正的发生在了坤哥身上,坤哥很是高兴。但是......,那妹子对坤哥说了“我脖子上戴的这串项链有n个珠子,可以用c种颜色对珠子涂染,你能告诉我能形成多少种不同的项链吗?”这下可难为坤哥,没想到把个妹子还这么难,你能帮助坤哥把妹成功吗?
输入格式
包含多组测试数据,每组测试数据包含两个整数n和c.(1<=n,c<=10)
输出
输出能够形成多少种不同的项链。
样例输入
1 1
2 1
2 2
5 1
2 5
2 6
6 2
样例输出
1
2
3
5
8
13
21
#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int m,n;
int gcd(int a,int b)
{
int r=0;
while(b!=0)
{
r=a%b;
a=b;
b=r;
}
return a;
}
int main()
{
int sum;
while(scanf("%d%d",&m,&n)!=EOF)
{
sum=0;
if(m==0&&n==0)
{
break;
}
for(int i=1;i<=n;i++)
{
int temp=gcd(n,i);
sum+=(int)(pow(m*1.0,temp*1.0));
}
if(n&1)
sum+=(int)(n*pow(m*1.0,(n+1)/2.0));
else
{
sum+=(int)((n/2)*pow(m*1.0,(n+2)/2.0));
sum+=(int)((n/2)*pow(m*1.0,n/2.0));
}
sum=sum/(2*n);
printf("%d\n",sum);
}
return 0;
}
#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int m,n;
int gcd(int a,int b)
{
int r=0;
while(b!=0)
{
r=a%b;
a=b;
b=r;
}
return a;
}
int main()
{
int sum;
while(scanf("%d%d",&m,&n)!=EOF)
{
sum=0;
if(m==0&&n==0)
{
break;
}
for(int i=1;i<=n;i++)
{
int temp=gcd(n,i);
sum+=(int)(pow(m*1.0,temp*1.0));
}
if(n&1)
sum+=(int)(n*pow(m*1.0,(n+1)/2.0));
else
{
sum+=(int)((n/2)*pow(m*1.0,(n+2)/2.0));
sum+=(int)((n/2)*pow(m*1.0,n/2.0));
}
sum=sum/(2*n);
printf("%d\n",sum);
}
return 0;
}