早教吧 育儿知识 作业答案 考试题库 百科 知识分享

一道Pascal题目:牛牛看到了一个非常有意思的游戏:游戏一开始,电脑屏幕上只有一个序列“A”,而后的每一次变化都把序列中的“A”变成“AB”,“B”变成“A”。游戏一直继续……,最

题目详情
一道Pascal题目:
牛牛看到了一个非常有意思的游戏:游戏一开始,电脑屏幕上只有一个序列“A”,而后的每一次变化都把序列中的“A”变成“AB”,“B”变成“A”。游戏一直继续……,最后屏幕上得到了序列“ABAABABAABAABABAABA……”。当然更有意思的是,电脑会提出Q个询问,每次询问:在第m个字符和第n个字符之间有多少个有多少个“A”(包括第m、n个字符在内)。你能帮牛牛解决这个问题吗?
▼优质解答
答案和解析
  1. 放程序题要放完整题目描述,m,n范围,完整输入输出格式好么亲=.=!

  2. 这个实际效果类似于生成斐波那契数列,实现通过计算前m个里面的减去前n-1里面的

  3. 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.
看了 一道Pascal题目:牛牛看...的网友还看了以下:

风电行业中的“弃风”是什么意思?在一些风电的资料和报道里经常看到一个词“弃风”,想请教一下,这个词  2020-04-09 …

高一物理在电视节目中,我们经常看到一种精彩的水上运动—滑水在电视节目中,我们常能看到一种精彩的水上  2020-05-13 …

请问,我在关于塑胶方面经常看到一个词语volume应该不是体积的意思吧?例如Offcourse,t  2020-05-22 …

一些电阻上的各种不同的条横颜色有哪些代表意思我经常看到一些欧姆电阻上有很多条不同颜色的条纹,但不知  2020-06-23 …

为什么我会经常看到一些白色的人影在学校走廊快速走过以前在初中就经常看到教室外走廊又白影闪过,以为是  2020-07-08 …

“有时候”“经常”这两个词连用正确么?在文章里常看到一句话“我们有时候经常吃糕点的时候”.“有时候  2020-07-21 …

请问英语freakin‘加一撇什么意思?还有一些词也经常看到一撇,  2020-07-22 …

有心算无心是什么意思?经常看见一句话“有心算无心”,该怎么解释?怎么理解?通俗一点……楼下几位队形不  2020-10-30 …

对未来踌躇满志?我常看见一些报道在说一些企业、学子等的时候说“他们对未来踌躇满志”,我的理解踌躇满志  2020-11-04 …

一、根据意思写词语.1.指对客观事物不关心,虽然经常看见一样.()2.形容举止文雅.()3.形容轻快  2020-12-03 …