提交时间:2024-11-21 14:14:52
运行 ID: 35002
#include<bits/stdc++.h> using namespace std; const int mod=1e9+7; long long l,r; long long a[1000100]; long long ans=0; long long find(long long a,long long b){ long long k=1; //cout<<"!"; while(b!=0){ //cout<<a<<" "<<k<<endl; if(b%2==1){ k=k*a*1ll%mod; } a=a*a*1ll%mod; b/=2; } return k; } int main(){ cin>>l>>r; long long r1=find(2,r+1)+mod-1; long long l1=find(2,l)+mod-1; r1%=mod; l1%=mod; if(r%2==0) r1--; r1=r1*find(3,mod-2)%mod; r1=(r1+mod-(r+1)/2%mod)%mod; if(l%2==1) l1--; l1=l1*find(3,mod-2)%mod; l1=(l1+mod-(l)/2%mod)%mod; ans=(r1-l1+mod)%mod; cout<<ans<<endl; }