感觉被侮辱智商了,这水题NM省选NOI-。。。。
直接枚举一维,另一维单调不增,然后直接算答案就可以了。。。。
gan
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int ha=1e9+7;
inline int add(int x,int y){ x+=y; return x>=ha?x-ha:x;}
inline void ADD(int &x,int y){ x+=y; if(x>=ha) x-=ha;}
int tqz(int x){
ll a=x*(ll)(x+1)>>1;
if(a%3==0) return a/3%ha*(ll)(2*x+1)%ha;
else return a%ha*(ll)((2*x+1)/3)%ha;
}
ll R;
int ans,l,r;
int main(){
scanf("%lld",&R);
for(l=1,r=(int)floor(sqrt(R-1+0.001));l*(ll)l<R;l++){
while(l*(ll)l+r*(ll)r>R) r--;
ADD(ans,add(tqz(r),l*(ll)l%ha*(ll)r%ha));
}
ans=ans*4ll%ha;
r=(int)floor(sqrt(R+0.001));
ADD(ans,4*(ll)tqz(r)%ha);
printf("%d
",ans);
return 0;
}