0
已解决
吴庞茂旭
资深光能
资深光能
1148 奇妙变换(magic)
题目描述 Description
为了奖励牛牛同学帮妈妈解决了大写中文数字的问题,牛牛妈妈特地抽出一个周末的时间带着牛牛来到梦幻儿童乐园游玩。
在游乐园,牛牛看到了一个非常有意思的游戏:游戏一开始,电脑屏幕上只有一个序列“A”,而后的每一次变化都把序列中的“A”变成“AB”,“B”变成“A”。游戏一直继续……,最后屏幕上得到了序列“ABAABABAABAABABAABA……”。当然更有意思的是,电脑会提出Q个询问,每次询问:在第m个字符和第n个字符之间有多少个“A”(包括第m、n个字符在内)。
你能帮牛牛解决这个问题吗?
输入描述 Input Description
第一行为一个整数Q,后面有Q行,每行两个数用空格隔开的整数m,n。
输出描述 Output Description
共Q行,每行一个回答。
样例输入 Sample Input
1
2 8
样例输出 Sample Output
4
数据范围及提示 Data Size & Hint
【数据范围】
1≤Q≤5000
1≤m≤n≤2^63
保证每次询问时,所询问的区间已经生成。
数据来源 Source
合肥市30届信息学竞赛第二题
这道题目怎么写呢?求大神指点!
如果您不麻烦,可以分步讲解(这样可能更容易被采纳哦!)
2
已采纳
毛振宇
修练者
修练者
以下是main函数代码,结构体代码你自己想一想? int main(){ len[1]=1,len[2]=2; a[1]=a[2]=1; for(int i=3;i<=91;i++) { len[i]=len[i-1]+len[i-2]; a[i]=a[i-1]+a[i-2]; } cin>>q; while(q--){ cin>>m>>n; cout<<cal(n,91)-cal(m-1,91)<<endl; } }
望采纳!!!!!!
望采纳!!!!!!
望采纳!!!!!!
望采纳!!!!!!
望采纳!!!!!!
1
邹昊轩
资深光能
资深光能
for(int i=1;i<=q;i++){
for(int j=m[i]-1;j<n[i];j++){
if(a[j]=='A'){
cnt[i]++;
}
}
}
记住,三个数组!!!自己定义哈。
再把CNT输出一下得了。
0
潘晨皓
高级天翼
高级天翼