【NOIP模拟】快速荷叶叶变换

来源:互联网 发布:夜未央乐未殇 知乎 编辑:程序博客网 时间:2024/06/10 15:20

Description

这里写图片描述

Solution

以前做过一道加强版的题目,叫做模积和。
所以第一题,秒切。

Code

#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;const int mo=1000000007;typedef long long ll;ll i,j,k,l,t,n,m,ans,r,yi,er;ll ksc(ll x,ll y){    if(!y)return 0;    if(y==1)return x;    ll z=ksc(x,y/2)*2%mo;    if(y%2)z=(z+x)%mo;    return z;}ll qiu(ll x,ll y){    ll o=(y-x+1),p=x+y;    if(o%2)return ksc(p/2,o);    else return ksc(o/2,p);}ll suan(ll x){    ll ans=0;    for(ll l=1,r=0;l<=x;l=r+1){        r=x/(x/l);        ll o=x/l;        ans=(ans+ksc(x,(r-l+1))-ksc(qiu(l,r),o))%mo;    }    ans=(ans+mo)%mo;    return ans;}int main(){    scanf("%lld%lld",&n,&m);    ans=ksc(1,7);    ans=ksc(suan(n),suan(m));    printf("%lld\n",ans);}
2 0
原创粉丝点击