輸入 \(n \le 998244351\), \(m \le 2 \times 10^5\),得到滿足長度為 \(n\),\(\forall i, a_i \le m\) 的一共 \(m^n\) 個序列。輸入 \(p,q\le m\), 定義乙個序列是合法的當且僅當
\[\mathrm(a_1,\cdots,a_n) \ge p \wedge \gcd(a_1,\cdots,a_n)\le q
\]乙個序列的價值是 \(\prod\);求上述生成的那些序列中,所有合法序列的價值和,對 \(998244353\) 取模。
首先,全體序列的價值和為 \((\sum_^)^n\)
首先先處理 \(\gcd >q\) 的情況
然後列舉 \(\mathrm < p \wedge \gcd \le q\) 的情況
#include #define ll long long
#define ms(arr, val) memset(arr, val, sizeof(arr))
#define vi vector#define pb push_back
#define eb emplace_back
#define pi pair#define pl pair#define lll __int128
#define ull unsigned long long
#define kases int t; rd(t); rep(kase, 1, t)
#define rep(i, a, b) for(int i = (a), __ ## i = (b); i <= __ ## i; ++i)
#define per(i, b, a) for(int i = (b), __ ## i = (a); i >= __ ## i; --i)
using namespace std;
// static char buf[1000000],*p1=buf,*p2=buf,obuf[1000000],*p3=obuf;
// #define getchar() p1==p2&&(p2=(p1=buf)+fread(buf,1,1000000,stdin),p1==p2)?eof:*p1++
// #define putchar(x) (p3-obuf<1000000)?(*p3++=x):(fwrite(obuf,p3-obuf,1,stdout),p3=obuf,*p3++=x)
inline void rd(char* x)
inline void rd(double &x)
templateinline void rd(t &x)
templateinline void rd(t &x, u &...y)
const int maxn = 214514, mod = 998244353;
ll qpow(ll a, ll b)
return ret;
}ll f[maxn], t[maxn];
ll fs[maxn]; // 因數和
ll n, m, p, q;
int main()
// 求最終所需答案
ms(f, 0);
rep(i, 1, m)
per(i, m, 1) rep(j, 2, m / i) f[i] = (f[i] - f[i * j] + mod) % mod;
rep(i, 1, q) ans = (ans - f[i] + mod) % mod;
cout << ans;
}
ccpc 賽後總結 20200926
經過了乙個疫情在家上網課的上半學期,學校的課程又排的比較滿,對於程式設計演算法這一方面確實疏忽了,練習的次數也明顯減少。還有就是比賽當日上午還在考試,做題的時候腦子都有點不夠用。乙個小時做了三道簽到題,a了1003 1007 1010,就做不出來別的題了。歸根結底還是我們太菜了,思路慢,演算法也不熟...
2023年CCPC合肥站
第一天 全天火車,一路上吃吃吃 鬥地主 睡睡睡 水水水 扯談 拍拍拍,晚上11.00才到酒店,巨餓,六個人拉了個討論組,一拍即合,拋棄xd跑出去買吃的。第二天 酒店好評,睡的不錯。早起趕到安徽大學簽到,志願者小姐姐又漂亮又友善,好評。領了東西,飯卡有80大元 真壕 到人家學校的感覺只有羨慕 放好東西...
2019秦皇島CCPC 計算幾何
首先題目的時間限制了中總複雜度應該是n n log n 或者說q n log n 此處q和n的範圍一致。通過叉乘定義點結構體的小於號,做到log級別的維護,此處非常巧妙,且通過base 函式使得方向相反的向量當作相同的。並且在每個詢問點不是直角頂點的情況下 離線每個詢問點,妙。include usi...