问题标题: 酷町堂:1148 奇妙变换(magic)

0
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
我要回答