测评机: Xeost[5]
得分: 75分
提交日期: 2011-4-1 10:21:00
有效耗时: 610毫秒
测试结果1: 通过本测试点|有效耗时63ms
测试结果2: 通过本测试点|有效耗时47ms
测试结果3: 测试结果错误.错误结果为:147483648
正确结果应为:2147483648
测试结果4: 通过本测试点|有效耗时47ms
测试结果5: 通过本测试点|有效耗时47ms
测试结果6: 测试结果错误.错误结果为:97152
正确结果应为:2097152
测试结果7: 测试结果错误.错误结果为:62143
正确结果应为:262144
测试结果8: 通过本测试点|有效耗时47ms
测试结果9: 通过本测试点|有效耗时47ms
测试结果10: 通过本测试点|有效耗时47ms
测试结果11: 通过本测试点|有效耗时46ms
测试结果12: 通过本测试点|有效耗时219ms
#include "stdio.h"
int main()
{
long long n,s=1;
scanf("%I64d",&n);
for(;;)
{
s*=2;
if(s>n)
break;
}
if(s-n>n-s/2)
printf("%I64d",n-s/2);
else
printf("%I64d",s-n);
getchar();
getchar();
return 0;
}
数据错了吗?
求数据
数据错了!我有三个点错了,正确输出全是2的k次方,没有减去题目中给的那个数,所以就会错了,自己的输出是147483648、97152、62143,标准输出是2147483648、2097152、262144,我看了数据分别是2000000000、2000000、200001,正好没减……
{
long g,n,i=2;
scanf("%ld",&n);
while(i<=n/2)i*=2;
g=((n-i)<(2*i-n))?(n-i):(2*i-n);
printf("%ld",g);
system("pause");
}
有问题么