【數論】codeforces 822D My pretty girl Noora
Link:http://codeforces.com/problemset/problem/822/D
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
/*
codeforces 825D
題意:N個人的比賽,將N個人平均分成N/x組,每組恰好x人。對於每組對f[N]的貢獻為 x⋅(x−1)/2。
同時產生N/x人晉級,其後續操作對f[N]的貢獻為 f[N/x]。直到僅剩一人為止。
給定t,l,r。求區間 [l, r] 的每個f[i],按公式t^0⋅f(l)+t^1⋅f(l+1)+⋯+t^(r−l)⋅f(r)求最小的解。
題解: 若N可以分成x人一組,f[N]=N/x*f[x]+f[N/x],對於N要分成一個人,過程中都是
要經過他的質因子的,無非順序問題,那麼當然先取最小質因子是最優的。
那麼我們需要預處理所有數的最小質因子,利用素數篩即可。
注意:別讓第一次求的最小質因子被後面的數覆蓋了。
*/
const int Maxn = 5*1e6+6;
const LL mod = 1e9+7;
int Minp[Maxn];
LL f[Maxn];
int main(){
int t,l,r;
scanf("%d%d%d",&t,&l,&r);
LL ans = 0;
LL pow = 1;
for(int i = 2; i <= r; i++){
if(Minp[i] == 0){
f[i] = ((LL)i*LL(i-1)/2LL)%mod;
for(int j = i+i; j <= r; j+=i){
if(Minp[j] == 0)
Minp[j] = i;
}
}
else{
f[i] = ((LL)i/(LL)Minp[i]*f[Minp[i]]+f[i/Minp[i]])%mod;
}
if(i >= l){
ans = (ans+pow*f[i]%mod)%mod;
pow = pow*(LL)t%mod;
}
}
printf("%I64d\n",ans);
return 0;
}
相關文章
- 20 compliments that needs to be said to my girl from time to timeAI
- Girl Permutation
- 2008 3 27: I'm sitting pretty in a pretty little city
- 【數論】Codeforces Round #404 (Div. 2)(D)Anton and School - 2
- Codeforces 577B Modulo Sum:數學 結論【選數之和為m的倍數】
- Codeforces 895C Square Subsets:狀壓dp【組合數結論】
- 【MYSQL】my.cnf引數詳解MySql
- CF1946E Girl Permutation
- Codeforces 893E Counting Arrays:dp + 線性篩 + 分解質因數 + 組合數結論
- 數論——數論分塊
- Codeforces 549C. The Game Of Parity[博弈論]GAM
- Mysql my.cnf部分引數說明MySql
- 有效配置MySQL引數--my.cnf(轉)MySql
- 數論
- pretty-printers:更優雅的看GDB堆疊資訊
- Divisibility 【數學計數】Codeforces 597A
- Tricky Sum【數學】CodeForces 598A
- CodeForces - 628D (數位dp)
- 如何提升自己的Codeforces分數
- 數論板子
- 模板 - 數論
- My PromisePromise
- MY WEBWeb
- 數學——數論/雜項
- 【數論】素數篩法
- CodeForces703B Mishka and trip 數學
- CodeForces 401D 數位DP
- Perl中的變數作用範圍 local, my, our與全域性變數變數
- HDU 4422 The Little Girl who Picks Mushrooms(簡單題)OOM
- 說唱音樂—程式設計女孩(Coder Girl)程式設計
- 數論小記
- 數論相關
- 基礎數論
- By My SideIDE
- My new English
- My Heart will go onGo
- It's my life
- It s my life