Jzoj4755 快速荷叶叶变换
生活随笔
收集整理的這篇文章主要介紹了
Jzoj4755 快速荷叶叶变换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
求ΣΣ(N%i)(M%j)(i<=N,j<=M) (N<=1e9,M<=1e9)
我們發現原式就是Σ(N%i)*Σ(M%j),這樣分開算可以得到60分
考慮化簡
Σ(N%i)=Σ(N-i*[N/i])=ΣN-Σi*Σ[N/i]=N^2-N*i*Σ[N/i]
又因為[N/i]取值只有√N種,可以考慮分段計算,若當前為i則i~[N/[N/i]]的結果是一樣的
復雜度O(√N+√M)
#include<stdio.h> #define P 1000000007 #define L long long L sum(L N){L ans=N*N%P;for(L i=1,j;i<=N;i=j+1){j=N/(N/i);ans=(P+ans-((i+j)*(j-i+1)>>1)%P*(N/i))%P;}return ans; } int main(){L N,M; scanf("%lld%lld",&N,&M);printf("%lld\n",sum(N)*sum(M)%P); }轉載于:https://www.cnblogs.com/Extended-Ash/p/7774345.html
總結
以上是生活随笔為你收集整理的Jzoj4755 快速荷叶叶变换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: webpack使用优化(基本篇)
- 下一篇: matlab神经网络函数