noip普及组的一道题,帮忙看看

来源:百度知道 编辑:UC知道 时间:2024/05/15 17:51:55
http://post.baidu.com/f?kz=288130727有题,这是第四道,这样做能否过1〈=N〈=30的情况?,再问下高精度怎么做?
#include <stdio.h>
int main()
{
int n=0,a=1,i=2,s=0;
FILE *fp,*fout;
fp=fopen("hanoi.in","r");
fout=fopen("hanoi.out","w");
fscanf(fp,"%d",&n);
for(;a<n;a++)
{
i=i*2;
}
s=i;
fprintf(fout,"%d",2*(s-1));
return 0;
}
PS:这个运行后总多出个gmon.out,谁知道为什么?
N<=200时?

#include <stdio.h>
int main()
{
int n=0,a=0,i=1;
double s = 1;//把s换成double就OK了
FILE *fp,*fout;
fp=fopen("hanoi.in","r");
fout=fopen("hanoi.out","w");
fscanf(fp, "%d", &n);
for(; a<n; a++)
{
s *= 2;
}
fprintf(fout,"%.f", 2*(s-1)); //换成double后输出要改变一下
return 0;
}

我是pascal 看不懂

就是啊,用了double就可以了,反正又不要小数部分,浮点的精度应该够了.
那个gmon.out是因为你用的GCC的编译器,然后打开了-pg选项,就会又这个文件,是用来辅助gprof做分析用的