gaoxin 2011-11-09 21:22:00
点我顶贴
收藏
删除
数据太大导致页面太卡,差点死机.
这个程序应该对的,为什么连输出都少了好多
var n,i,j,k,t,x,y,z:longint;
//t是2的个数
begin
readln(n);
for i:=1 to n do
begin
readln(x,y);
if y>x div 2 then y:=x-y;
t:=0;
for j:=2 to y do
begin
z:=j;
while not odd(z) do
begin
dec(t);
z:=z shr 1;
end;
end;
for j:=x-y+1 to x do
begin
z:=j;
while not odd(z) do
begin
inc(t);
z:=z shr 1;
end;
end;
if t>0 then writeln(0) else writeln(1);
end;
end.
#1 姚斯宇@2008-02-24 10:05:00
904
回复
删除
虽然我看不太懂你的代码,不过,我的方法AC了!
对于输入的 n,k;
将 n 转为二进制,存入数组 a[ ] ,为w1位数;
将 k 转为二进制,存入数组 b[ ] ,为w2位数;
flag=1;
for i=1 to w2 ;
{
如果a[i]=0且 b[i]=1;
flag=0;
}
if flag=1 结果为奇数;
else 结果为偶数;
这就是为什么C(7,k)总为奇数,
因为 a[] 为1 1 1 1;
没有“0”,所以flag=1;
这个方法应该是最快了吧,欢迎大牛指出不足之处,谢谢!