讨论 / 为什么过不去
zmh 2011-04-23 05:24:00
点我顶贴 收藏 删除
状态: Unaccepted

测评机: 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;

}

数据错了吗?

求数据

#1 woshishui---@2011-04-06 00:57:00
回复 删除
哇,错的和我一样额……暂时不会改……
#2 woshishui---@2011-04-06 01:27:00
回复 删除
数据错了!

数据错了!我有三个点错了,正确输出全是2的k次方,没有减去题目中给的那个数,所以就会错了,自己的输出是147483648、97152、62143,标准输出是2147483648、2097152、262144,我看了数据分别是2000000000、2000000、200001,正好没减……

#3 renqiangii@2011-04-23 05:24:00
回复 删除
一样····························连续4次都是

有三个点过不去······

#4 renqiangii@2011-04-23 05:24:00
回复 删除
我的代main()

{

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");

}

有问题么

查看更多回复
提交回复