View Code of Problem 60

#include <stdio.h>
#include<math.h>
int y[100]={0};
int max(int a)
{
    int m;
    a-=1;
    while(a>=0)
    {
        m+=pow(2,a);
        a--;
    }
    return m;
}
int judge(int k)
{
    int i;
    for(i=1;k!=0;i++)
    {
        y[i]=k%2;
        if(y[i]+y[i-1]==2) return 0;
        k/=2;
    }
    return 1;
}
int main()
{
    int n,i,count,zs,g,sum;
    zs=1;
    scanf("%d",&g);
    if(g<=40)
    {
        while(g--!=0)
        {
            scanf("%d",&n);
            if(n<=40)
            {
                count=0;
                sum=max(n);
                for(i=0;i<=sum;i++)
                {
                    if(judge(i)==1)
                        count++;
                }
                printf("Scenario #%d:\n%d\n\n",zs++,count);
            }
        }
    }
    return 0;
}

Double click to view unformatted code.


Back to problem 60