提高第7场c题

#include<bits/stdc++.h>
using namespace std;
int T;
const int N=75;
unsigned long long fab[N+1];
bool t1=0,t2=0;
unsigned long long memo;
void ap(void)
{
    fab[1]=1;fab[2]=1;
    for(int i=3;i<=N;i++) fab[i]=fab[i-1]+fab[i-2];
    return;
}
unsigned long long solve(unsigned long long n)
{
    if(t1==1) 
    {
        t1=0;
        t2=1;
        return (memo xor 1) xor 2;
    }
    else if(t2==1) 
    {
        t1=0;
        t2=0;
        return (memo xor 2) xor 3;
    }
    unsigned long long sum=0;
    while(n!=0)
    {
        int site=(lower_bound(fab+1,fab+N,n)-fab);
        if(fab[site]>n) site--;
        sum=sum xor fab[site];
        n=n-fab[site];
        if(fab[site]==1) t1=1;
        if(fab[site]==2) t2=1;
    }
    return sum;
}
int main()
{
    unsigned long long ans=0;
    cin>>T;
    ap();
    for(int i=1;i<=T;i++)
    {
        ans=0;
        unsigned long long l,r;
        cin>>l>>r;
        for(unsigned long long j=l;j<=r;j++)
        {
            t1=0;
            t2=0;
            unsigned long long ss=solve(j);
            ans=ans xor ss;
            memo=ss;
        }
        cout<<ans<<endl;
    }
}

为什么t了,求解

全部评论

相关推荐

不愿透露姓名的神秘牛友
02-25 17:03
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
03-29 08:32
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务