NOIP模拟测试39,思维禁锢专场「工业题·玄学题·卡常题」
工業題
題解
抱歉,題解沒時間寫了
?
代碼
#include<bits/stdc++.h> using namespace std; #define ll long long #define A 6666666 #define mod 998244353 ll jie[A],ni[A],acnt[A],bcnt[A]; ll fheng[A],fshu[A]; ll n,m,a,b; ll meng(ll x,ll k){ll ans=1;for(;k;k>>=1,x=x*x%mod)if(k&1)ans=ans*x%mod;return ans; } ll C(ll x,ll y){return jie[x]*ni[x-y]%mod*ni[y]%mod; } int main(){ // freopen("a_sample2.in","r",stdin);scanf("%lld%lld%lld%lld",&n,&m,&a,&b);a%=mod,b%=mod;jie[0]=1;ni[0]=1;acnt[0]=bcnt[0]=1;for(ll i=1;i<=n+m;i++)jie[i]=jie[i-1]*i%mod,acnt[i]=acnt[i-1]*a%mod,bcnt[i]=bcnt[i-1]*b%mod;ni[n+m]=meng(jie[n+m],mod-2);for(ll i=n+m-1;i>=1;i--)ni[i]=ni[i+1]*(i+1)%mod;for(ll i=1;i<=n;i++)scanf("%lld",&fheng[i]),fheng[i]%=mod;for(ll j=1;j<=m;j++)scanf("%lld",&fshu[j]),fshu[j]%=mod;ll ans=0;for(ll i=n;i>=1;i--){ // printf("acnt=%lld bcnt=%lld ") // printf("fheng[]=%lld n-i+m=%lld m=%lld i=%lld c=%lld acnt=%lld bcnt=%lld\n",fheng[i],n-i+m,m,i,C(n-i+m,m),acnt[m],bcnt[n-i]);ans=(ans+fheng[i]*((acnt[m]%mod*bcnt[n-i]%mod)%mod)%mod*C(n-i+m-1,m-1)%mod)%mod;}for(ll i=1;i<=m;i++){ // printf("fheng[]=%lld n-i+m=%lld m=%lld i=%lld c=%lld acnt=%lld bcnt=%lld\n",fshu[i],n-i+m,m,i,C(n-i+m,m),acnt[m-i],bcnt[n]);ans=(ans+fshu[i]*((acnt[m-i]%mod*bcnt[n]%mod)%mod)%mod*C(n-i+m-1,n-1)%mod)%mod;}printf("%lld\n",ans); } View Code玄學題
題解
題目中說求$\sum\limits_{i=1}^{i<=n}(-1)^{\sum\limits_{j=1}^{j<=m} d(i*j)}$ $d$表示約數個數
$(-1)^{\sum\limits_{j=1}^{j<=m} d(i*j)}$只和奇偶性有關,如果$d(i*j)$為偶數,那么它是沒用,偶+偶=偶,偶+奇=奇
那么只考慮約數個數為奇就可以了,發現約數個數為奇當且僅當為完全平方數
我們把$i$ 拆成 $p*q^2$($p$ 沒有平方因子),那 $j$ 必須有 $p*r^2$ 的形式,所以對于每個 $i$,都有 $sqrt(\frac{m}{p})$ 個 $j$ 產生貢獻。
可以埃篩(需要卡常)可以線篩
我用的埃篩
代碼
#include<bits/stdc++.h> using namespace std; #define ll int #define A 11111111 long long m,n,ans; ll a[A]; int main(){scanf("%lld%lld",&n,&m);for(ll i=1;i<=n;i++)a[i]=i;ll haha=sqrt(n);for(ll i=haha;i>=2;i--){ll now=i*i;for(ll j=now;j<=n;j+=now){while(a[j]%now==0)a[j]/=now;}}for(ll i=1;i<=n;i++){long long now=m/a[i];now=sqrt(now);if(now&1) ans--;else ans++;}printf("%lld\n",ans); } View Code卡常題
題解
代碼
?
考試經歷
?
$t1$沉迷打表
范圍很大,我覺得可能是$n+m$的
我總覺得$f[n][m]$可拆,拆成$w1*(?*a*?*b)*f[n][0]+w2*(?*a*?*b)f[n-1][0]+.......w.*(?*a*?*b)f[0][m]$
$?$很簡單,可以推出來$a$,$b$系數,然后我就開始推總體系數$w$
然后我就打了$75$分鐘表,
當然也有一丁點收獲
1 1 2 1 3 6 1 4 10 20 1 5 15 35 70 1 6 21 56 126 252 1 7 28 84 210 462 924$update$
這個表就是組合數表,呵呵.終于認清自己傻逼本質
一直到$20$行我只截取了7行
然而并沒有什么卵用,
這個式子屁用沒有
然后開始想$t2$
$t2$讓我想起了
God Knows然后我開始想$區間dp$
然后我想了很長時間,依然沒有任何收獲
轉移起來跟.一樣
然后看$t3$,
轉載于:https://www.cnblogs.com/znsbc-13/p/11482156.html
總結
以上是生活随笔為你收集整理的NOIP模拟测试39,思维禁锢专场「工业题·玄学题·卡常题」的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4113元的AMD四核羿龙955单家庭娱
- 下一篇: 形容天气冷的幽默句子111个