将军的书

来源:互联网 发布:isu130数据 编辑:程序博客网 时间:2024/04/28 16:12

地址:http://acm.swust.edu.cn/problem/0258/

这个题主要是考虑限时问题。如果用#include<math.h>中的pow函数会超时,因为是在函数库中查找,很费时,,所以自己写一个就好。另外这个题要想:::书的所有页数等于(1+2+3+……+n)=n(n+1)/2。。所以用这个总的页数减去已有页数的和,就是缺少的页数。

#include<stdio.h>
int main()
{
int turn(char a[]);
int assu(int n);
int N;
while(scanf("%d",&N)!=EOF)
{
int date=assu(N)-1,sum=0;
if(N<=0 || N>=22)
return 0;
char str[21];
int i;
for(i=0;i<date;i++)
{
scanf("%s",str);
sum=sum+turn(str);
}
printf("%d\n",date*(date+1)/2-sum);
}
return 0;
}
int turn(char a[])
{
int assu(int n);
int sum=0;
int i,j=0;
for(i=20;i>=0;i--,j++)
{
if(a[i]=='1')
sum=sum+assu(j);
}
return sum;
}
int assu(int n)
{
int sum=1;
int i;
for(i=0;i<n;i++)
sum=sum*2;
return sum;
}

0 0