讨论 / 为什么当k等于15,n等于1000的时候输出的是-1760410210,这样也可以ac吗
sunwenlongtan 2011-12-14 04:58:00
点我顶贴 收藏 删除
#include<stdio.h>

int main()

{

int i,k,n,a[1000],m=1,x=1;

long s=0;

scanf("%d%d",&k,&n);

while(n>0)

{

a[m++]=n%2;

n/=2;

}

for(i=1;i<m;i++)

{

s+=a[i]*x;

x*=k;

}

printf("%ld",s);

return 0;

}

#1 woshishui---@2011-07-11 04:39:00
回复 删除
哪道题啊?
#2 wenhongxin@2011-07-11 18:53:00
回复 删除
[quote][url=/Discuss_Show.asp?DID=8900]原帖[/url]由 [i]sunwenlongtan[/i] 于 2011-7-10 21:31:00 发表

#include<stdio.h>

int main()

{

int i,k,n,a[1000],m=1,x=1;

long s=0;

scanf("%d%d",&k,&n);

while(n>0)

{

a[m++]=n%2;

n/=2;

}

for(i=1;i<m;i++)

{

s+=a[i]*x;

x*=k;

}

printf("%ld",s);

return 0;

}

[/quote]

不可以

#3 107229HR@2011-07-18 05:59:00
回复 删除
可能可以,因为这是极端条件,超出了2.1*10^9,可以

#4 qscmx@2011-12-14 04:42:00
回复 删除
本题其实应该要使用到高精度算法了。要不15的N次方,可能数据会爆掉
#5 qscmx@2011-12-14 04:58:00
回复 删除
法过题目又告诉我们不用高精度数,所以,15的第1000项不会出现。
查看更多回复
提交回复