题目链接:http://codeforces.com/contest/1559/problem/E
先不考虑 (gcd) 的限制,设 (dp[i][j]) 表示前 (i) 个数和为 (j) 的方案数
容斥掉 (gcd) 不为 (1) 的答案,那就是考虑只选 (gcd) 的倍数的数的答案,容斥系数是莫比乌斯函数
时间复杂度 (O(nmln(m)))
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxm = 100010;
const int maxn = 55;
const int M = 998244353;
int n, m, cnt = 0;
int a[maxm * 2], l[maxm][maxn], r[maxm][maxn];
int dp[maxn][maxm], f[maxm], sum[maxn][maxm];
int prime[maxm], is_prime[maxm], mu[maxm];
ll read(){ ll s = 0, f = 1; char ch = getchar(); while(ch < '0' || ch > '9'){ if(ch == '-') f = -1; ch = getchar(); } while(ch >= '0' && ch <= '9'){ s = s * 10 + ch - '0'; ch = getchar(); } return s * f; }
int main(){
mu[1] = 1;
for(int i = 2; i <= 100000; ++i){
if(!is_prime[i]){
prime[++cnt] = i;
mu[i] = -1;
}
for(int j = 1 ; j <= cnt && prime[j] * i <= 100000 ; ++j){
is_prime[i * prime[j]] = 1;
if(i % prime[j] == 0) {
mu[i * prime[j]] = 0;
break;
} else {
mu[i * prime[j]] = -mu[i];
}
}
}
n = read(), m = read();
for(int i = 1 ; i <= n ; ++i) l[1][i] = read(), r[1][i] = read();
memset(f, 0, sizeof(f));
for(int g = 2 ; g <= m ; ++g){
int tot = 0;
for(int i = 0 ; i <= m ; i += g){
a[++tot] = i;
}
for(int i = 1 ; i <= n ; ++i){
int p = lower_bound(a + 1, a + 1 + tot, l[1][i]) - a;
if(p == tot + 1) p = tot;
l[g][i] = a[p];
p = lower_bound(a + 1, a + 1 + tot, r[1][i]) - a;
if(p == tot + 1) p = tot;
r[g][i] = a[p];
if(r[g][i] > r[1][i]) r[g][i] -= g;
}
}
int res = 0;
for(int g = 1 ; g <= m ; ++g) { // gcd
int tmp = g;
int cnt_fac = 0;
int mx = 0; int up = (int)sqrt(g+0.5);
for(int j = 1 ; j <= cnt && prime[j] <= up ; ++j){
if(tmp % prime[j] == 0) ++cnt_fac;
int cnt_p = 0;
while(tmp % prime[j] == 0){
tmp /= prime[j];
++cnt_p;
}
mx = max(mx, cnt_p);
}
if(tmp > 1) ++cnt_fac, mx = max(mx, 1);
for(int i = 1 ; i <= n ; ++i){
for(int j = g ; j <= m ; j += g) dp[n][j] = 0;
}
dp[0][0] = 1;
sum[0][1] = 1; int down = 0;
for(int i = g ; i <= m ; i += g) sum[0][i+1] = sum[0][i-g+1];
for(int i = 1 ; i <= n ; ++i){
down += l[g][i];
if(l[g][i] > r[g][i]) continue;
for(int j = g ; j <= m ; j += g){
dp[i][j] = ((sum[i-1][max(0, j-l[g][i]+1)] - sum[i-1][max(0, j-r[g][i]-g+1)]) % M + M) % M;
sum[i][j+1] = (sum[i][j-g+1] + dp[i][j]) % M;
}
}
for(int i = g ; i <= m ; i += g) {
f[g] = (f[g] + dp[n][i]) % M;
}
res = ((res + mu[g] * f[g]) % M + M) % M;
}
printf("%d
", res);
return 0;
}
restaurant-lenvol.net
Fang Jifan은 “그냥, 어떤 역량을 가지고 가야 할까요?”라고 말했습니다.
baseballoutsider.com
그들은 ‘황제’가 나오는 것을 보았을 때 감히 고개를 들지 못하고 모두 고개를 숙이고 엎드렸다.
homefronttoheartland.com
장 황후는 눈에 매우 간절해 보였지만 그녀의 조상이 Fang Jifan만큼 좋지 않은 것에 너무 화가났습니다.
strelkaproject.com
6~7만 냥은 결코 적은 금액이 아니며, 여전히 사용 가능한 현금입니다.
sm-online-game.com
그리고 역시나 두툼해서 가격도 저렴하고 양도 충분하다고 할 수 있습니다.
lfchungary.com
Hongzhi 황제는 눈살을 찌푸 렸습니다. “당신은 너무 어려서 승마와 양궁을 배워야합니까?”
dota2answers.com
사실 홀 안의 사람들뿐만 아니라 팡 가족 밖의 많은 사람들도 마찬가지다.
does cephalexin treat staph
pragmatic-ko.com
자금성을 안다면 이미 400,000냥을 잃은 것입니다.
lfchungary.com
Huang Jinzhou에서 다시 소식을 접한 Tianjin Wei Express Delivery Shop은 겁이났습니다.날씨는 점점 추워지고 있었지만 이날 꼬맹이 조셉은 아침 일찍 학교에 왔습니다.
smcasino7.com
옆에 있던 사제들과 왕실 신하들은 모두 안도의 표정을 지었다.
bistroduet.com
Xu Jing은 고개를 저었다. “여기가 어디인지 아세요?”
pragmatic-ko.com
Fang Jifan은 미소를 지으며 즉시 “가서 해봐”라고 자랑스럽게 말했습니다.
lfchungary.com
Fang Jifan은 부끄러울 수밖에 없었습니다. “열심히 일해야합니다.”
chutneyb.com
이 수많은 질문은 Zhou Yi를 어지럽게 만들었습니다.
shopanho.com
Hongzhi 황제는 “이 원정대가 그렇게 큰 규모가 필요합니까? “라고 말했습니다.
neurontin 400 mg
mega-casino66.com
재가열 후 Liu Teng 앞에 놓였습니다.
jelenakaludjerovic.com
선진 시대의 이야기를 들려주는 책 “Mr. Zhao”를 추천합니다.
chutneyb.com
Zhang Jing은 “Zhizhou가 Zhang Juren과 어떤 관계가 있을지도 모릅니다. “라고 말했습니다.
mojmelimajmuea.com
“다들 잘 지내?” 팡지판과 두 삼촌도 열광적으로 화답했다.
jbustinphoto.com
Zhu Zaimo는 눈살을 찌푸리고 매우 주의 깊게 들었습니다.
pchelografiya.com
시골 사람들 눈에는 50원이 작은 돈이 아닌데…
mojmelimajmuea.com
Fang Jifan이 응답하지 않는 것을보고 Wang Ao는 화를 내지 않고 익숙해졌습니다.
l-inkproject.com
이 모든 상점은 고품질 제품을 판매하고 오랜 역사를 가지고 있으며 모두 베이징의 오래된 상점입니다.
sm-online-game.com
이 재무 보고서는 Fang Jifan의 여동생 Fang Xiaofan이 계산했습니다.
khasiss.com
내가 언제 이렇게 많은 돼지와 많은 닭을 먹었는지, 내가 바보인가?
parrotsav.com
남의 돈을 훔치는 것은 자기 부모를 죽이는 것과 같을 뿐만 아니라 돈뿐만이 아니다.
ttbslot.com
“올드 팡, 올드 팡…말 좀 해, 왜 한 마디도 안 해?”
ttbslot.com
Zhang Chang은 내시의 모습을보고 깜짝 놀랐고 얼굴의 분노가 점차 사라졌습니다.
ttbslot.com
수많은 돈과 식량, 그리고 징집된 수많은 민간인들은 모두 당신의 전쟁부에서 소비합니다.
veganchoicecbd.com
다행스럽게도 … 다행히 폐하께서는 자금성에 계시지 않고 자금성에 있다면 끔찍할 것입니다.
qiyezp.com
Hongzhi 황제는 주위를 둘러 보았습니다. “주님,이 문제에 대해 어떻게 생각하십니까?”
sandyterrace.com
황실 사절이 칙령을 발표한 후, 그는 Qi Jingtong에게 이상한 표정을 지었습니다.
thewiin.com
이때 Zhu Houzhao도 “이게 지난번의 Chen Tong입니까? “라고 말했습니다.
qiyezp.com
이것을 생각하자 주후조의 몸이 떨렸고 그의 눈에는 또 다른 광채가 빛났다.
qiyezp.com
그는 깨진 냄비와 같았고 Xishan Academy 사람들과 결혼했습니다.