Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
34695 | swzzzz | 【S】T1 | C++ | 解答错误 | 81 | 0 MS | 256 KB | 753 | 2024-11-12 16:41:52 |
#include<bits/stdc++.h> using namespace std; #define mod 1000000007 #define ll long long ll search(ll x){ ll l=1,r=x,mid,ans; while (l<=r) { mid=l+(r-l)/2; if(mid*mid<=x){ ans=mid; l=mid+1; }else r=mid-1; } return ans; } ll cal(ll x){ //cout<<x<<":\n"; ll i=search(x); //cout<<i<<endl; ll ans; if(x<=i*i+i){ ans=(i*i+x)%mod*(x-i*i+1)%mod/2; }else{ ans=((i+1)*(i+1)+x)%mod*((i+1)*(i+1)-x-1)%mod/2; } if(i%2==0) ans*=-1; while (ans<0) ans+=mod; return ans%mod; } int main(){ ll l,r; cin>>l>>r; ll ans=cal(r)-cal(l-1); while (ans<0) ans+=mod; cout<<ans<<endl; return 0; }