HDOJ 1817 Necklace of Beads

来源:互联网 发布:flac转wav软件 mac 编辑:程序博客网 时间:2024/04/24 21:40

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1817

此题就是一个弱化版本的HDOJ 3923 Invoker,区别在于颜色数都是定死的(所以说是弱化版的),要是不会的同学可以去看看小编的另一篇博客。

#include <stdio.h>int gcd(int a,int b) {return b?gcd(b,a%b):a;}long long Pow(long long a,int b){    long long c=1;    while(b){        if(b&1) c*=a;        a*=a;        b>>=1;    }    return c;}long long flip(int n){    long long ans;    if(n&1)        return Pow(3LL,n/2+1)*n;    else{        ans=Pow(3LL,n>>1)*(n>>1);        ans+=Pow(3LL,n/2+1)*(n>>1);        return ans;    }}long long spin(int n){    int i;    long long ans=Pow(3LL,n);    for(i=1;i<n;i++)        ans+=Pow(3LL,gcd(n,i));    return ans;}int main(void){    int n;    long long ans;    while(scanf("%d",&n)==1&&n!=-1){        if(n==0){            puts("0");            continue;        }        if(n==1){            puts("3");            continue;        }        ans=flip(n);        ans+=spin(n);        printf("%I64d\n",ans/(n<<1));    }    return 0;}


0 0
原创粉丝点击