一道Pascal题目:牛牛看到了一个非常有意思的游戏:游戏一开始,电脑屏幕上只有一个序列“A”,而后的每一次变化都把序列中的“A”变成“AB”,“B”变成“A”。游戏一直继续……,最
牛牛看到了一个非常有意思的游戏:游戏一开始,电脑屏幕上只有一个序列“A”,而后的每一次变化都把序列中的“A”变成“AB”,“B”变成“A”。游戏一直继续……,最后屏幕上得到了序列“ABAABABAABAABABAABA……”。当然更有意思的是,电脑会提出Q个询问,每次询问:在第m个字符和第n个字符之间有多少个有多少个“A”(包括第m、n个字符在内)。你能帮牛牛解决这个问题吗?
放程序题要放完整题目描述,m,n范围,完整输入输出格式好么亲=.=!
这个实际效果类似于生成斐波那契数列,实现通过计算前m个里面的减去前n-1里面的
n,m会比较大小;n,m不要超过斐波那契数列第86项:420196140727489673
var
n, m, temp:int64;
i, q:integer;
f, len:array [0..100] of int64;
//how many a in first p
function get(p:int64):int64;
var
ii,a:integer;
b, ans:int64;
begin
if p<=0 then exit(0);
a:=85;
b:=p;
ans:=0;
while (a>2) do
if b>len[a-1] then
begin
b:=b-len[a-1];
ans:=ans+f[a-1];
a:=a-2;
end else
a:=a-1;
exit(ans+1);
end;
begin
//preparation
f[1]:=1; len[1]:=1;
f[2]:=1; len[2]:=2;
for i:=3 to 85 do
begin
f[i]:=f[i-1] + f[i-2];
len[i]:=len[i-1] + len[i-2];
end;
//read and solve
readln(q);
for i:=1 to q do
begin
readln(n,m);
if (m<n) then
begin
temp:=m; m:=n; n:=temp;
end;
writeln(get(m) - get(n-1));
end;
end.
懂的朋友来 100分将一气球A固定在一个能伸缩的真空管B中的一端 然后将B放入另一真空管C中 然后 2020-05-16 …
将函数y=[b/(x+a)]+a的图像向右平移2个单位后又向下平移2个单位,所得图像如果与原图像关 2020-06-06 …
a十a十a一b一b二8·2b十b十b一a一a二1·7则a二?b二? 2020-07-13 …
量词座使用不当的是(多选)A.一座过江隧道B.一座发射台C.一座公交车D.一座座山川E.一座古塔 2020-07-21 …
整式(a十b一c)(a一b十c)十(b一a十c)(b一a一c)的公因式是(). 2020-08-01 …
生活中骗子的骗术五花八门、形形色色。我们避免上当受骗的最佳方法是()A.出门在外,不跟任何人打交道B 2020-11-22 …
如图,小赵从A出发到达B处,他只知道B在A的东北方向,图中一短线表示一段道路,他每到一个交叉点路口时 2020-11-26 …
“独学而无友,则孤陋而寡闻”,对这句话的理解最恰当的是()A.人生活在社会中,离不开与群体的接触,都 2020-12-16 …
“独学而无友,则孤陋而寡闻”,对这句话的理解最恰当的是()A.人生活在社会中,离不开与群体的接触,都 2020-12-16 …
生活中骗子的骗术五花八门、形形色色.我们避免上当受骗的最佳方法是()A.出门在外,不跟任何人打交道B 2020-12-25 …