| 比赛 | 
    20111107 | 
    评测结果 | 
    AAAAAAAAAA | 
    | 题目名称 | 
    产生01串 | 
    最终得分 | 
    100 | 
    | 用户昵称 | 
    Des. | 
    运行时间 | 
    0.000 s  | 
    | 代码语言 | 
    Pascal | 
    内存使用 | 
    0.00 MiB  | 
    | 提交时间 | 
    2011-11-07 09:19:50 | 
显示代码纯文本
program infinit;
var a:array[1..100,0..1]of qword;
    f:Array[0..100]of qword;
    t,k,m,n:longint;
    s,i,j,x,y:qword;
begin
assign(input,'infinit.in' );
reset(input);
assign(output,'infinit.out');
rewrite(output);
readln(n);
a[1,0]:=0;
a[1,1]:=1;
f[0]:=1;
f[1]:=1;
for t:=2 to 92 do
  begin
    a[t,0]:=a[t-1,1];
    a[t,1]:=a[t-1,0]+a[t-1,1];
    f[t]:=f[t-1]+f[t-2];
  end;
for t:=1 to n do
  begin
    readln(i,j);
    x:=0;
    y:=0;
    dec(i);
    for k:=1 to 92 do
      if f[k]>i then break;
    dec(k);
    if i>0 then
    repeat
      if f[k]<=i then
        begin
          i:=i-f[k];
          x:=x+a[k,1];
        end;
      dec(k);
    until i=0;
    for k:=1 to 92 do
      if f[k]>j then break;
    dec(k);
    if j>0 then
    repeat
      if f[k]<=j then
        begin
          j:=j-f[k];
          y:=y+a[k,1];
        end;
      dec(k);
    until j=0;
    writeln(y-x);
  end;
close(output);
end.