打板子机器启动!

快读
#include<bits/stdc++.h> using namespace std; const int N=1000005; int n; int ans; int read(){ int ff=1,kk=0; char cc=getchar(); while(cc>'9'||cc<'0'){ if(cc=='-')ff=-1; cc=getchar(); } while(cc<='9'&&cc>='0'){ kk=kk*10+cc-'0'; cc=getchar(); } return ff*kk; } int main(){ n=read(); printf("%d",ans); return 0; }
快读快输
#include<bits/stdc++.h> using namespace std; const int N=1000005; int n; int ans; int read(){ int ff=1,kk=0; char cc=getchar(); while(cc>'9'||cc<'0'){ if(cc=='-')ff=-1; cc=getchar(); } while(cc<='9'&&cc>='0'){ kk=kk*10+cc-'0'; cc=getchar(); } return ff*kk; } void write(int x){ if(x<0)x=-x,putchar('-'); if(x>9)write(x/10); putchar(x%10+'0'); return; } int main(){ n=read(); printf("%d",ans); //write(n); return 0; }
P1226 【模板】快速幂
#include<bits/stdc++.h> using namespace std; int a,b,p; int read(){ int ff=1,kk=0; char cc=getchar(); while(cc>'9'||cc<'0'){ if(cc=='-')ff=-1; cc=getchar(); } while(cc<='9'&&cc>='0'){ kk=kk*10+cc-'0'; cc=getchar(); } return ff*kk; } int qpower(int x,int y){ int ans=1; while(y){ if(y&1)ans=1ll*ans*x%p; x=1ll*x*x%p; y>>=1; } return ans; } int main(){ a=read();b=read();p=read(); printf("%d^%d mod %d=%d",a,b,p,qpower(a,b)); return 0; }
P3383 【模板】线性筛素数
#include<bits/stdc++.h> using namespace std; const int N=100000005,M=5770000; int n,q; int a[M],cnt; bool pri[N]; int read(){ int ff=1,kk=0; char cc=getchar(); while(cc>'9'||cc<'0'){ if(cc=='-')ff=-1; cc=getchar(); } while(cc<='9'&&cc>='0'){ kk=kk*10+cc-'0'; cc=getchar(); } return ff*kk; } void prime(){ for(int i(2);i<=n;++i){ if(!pri[i])a[++cnt]=i; for(int j(1);j<=cnt&&1ll*i*a[j]<=n;++j){ pri[i*a[j]]=1; if(i%a[j]==0)break; } } return; } int main(){ n=read();q=read(); prime();//cout<<cnt<<'\n'; while(q--)printf("%d\n",a[read()]); return 0; }
P10815 【模板】快速读入
#include<bits/stdc++.h> using namespace std; int n,ans; int read(){ int ff=1,kk=0; char cc=getchar_unlocked(); while(cc>'9'||cc<'0'){ if(cc=='-')ff=-1; cc=getchar_unlocked(); } while(cc<='9'&&cc>='0'){ kk=kk*10+cc-'0'; cc=getchar_unlocked(); } return ff*kk; } int main(){ n=read(); while(n--)ans+=read(); printf("%d",ans); return 0; }

注意 getchar_unlocked() 只能在 Linux 上使用,在 Windows 环境下会 CE。

P3370 【模板】字符串哈希
#include<bits/stdc++.h> using namespace std; const int N=1000005; int n; unordered_map<string,bool> mp; int ans; int read(){ int ff=1,kk=0; char cc=getchar(); while(cc>'9'||cc<'0'){ if(cc=='-')ff=-1; cc=getchar(); } while(cc<='9'&&cc>='0'){ kk=kk*10+cc-'0'; cc=getchar(); } return ff*kk; } int main(){ n=read(); while(n--){ string str; cin>>str; if(mp[str]==0)++ans,mp[str]=1; //cout<<str<<" "<<ans<<'\n'; } printf("%d",ans); return 0; }

注意:unordered_map,unordered_set,tuple,array

B3647 【模板】Floyd
#include<bits/stdc++.h> using namespace std; const int N=105; int n,m; int dis[N][N]; int read(){ int ff=1,kk=0; char cc=getchar(); while(cc>'9'||cc<'0'){ if(cc=='-')ff=-1; cc=getchar(); } while(cc<='9'&&cc>='0'){ kk=kk*10+cc-'0'; cc=getchar(); } return ff*kk; } int main(){ n=read();m=read(); memset(dis,0x3f,sizeof dis); for(int i(1);i<=n;++i)dis[i][i]=0; while(m--){ int u=read(),v=read(),w=read(); dis[u][v]=min(dis[u][v],w); dis[v][u]=min(dis[v][u],w); } for(int k(1);k<=n;++k) for(int i(1);i<=n;++i) for(int j(1);j<=n;++j) dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]); for(int i(1);i<=n;++i){ for(int j(1);j<=n;++j) printf("%d ",dis[i][j]); puts(""); } return 0; }
B3644 【模板】拓扑排序 / 家谱树
#include<bits/stdc++.h> using namespace std; const int N=105; int n; vector<int> g[N]; int f[N]; int read(){ int ff=1,kk=0; char cc=getchar(); while(cc>'9'||cc<'0'){ if(cc=='-')ff=-1; cc=getchar(); } while(cc<='9'&&cc>='0'){ kk=kk*10+cc-'0'; cc=getchar(); } return ff*kk; } queue<int> q; int main(){ n=read(); for(int i(1);i<=n;++i){ int j=read(); while(j){ g[i].push_back(j); ++f[j]; j=read(); } } for(int i(1);i<=n;++i)if(!f[i])q.push(i); while(q.size()){ int x=q.front(); q.pop(); printf("%d ",x); for(int v:g[x]){ --f[v]; if(!f[v])q.push(v); } } return 0; }
P1886 滑动窗口 /【模板】单调队列
#include<bits/stdc++.h> using namespace std; const int N=1000005; int n,k,a[N]; int h[N],l,r; int read(){ int ff=1,kk=0; char cc=getchar(); while(cc>'9'||cc<'0'){ if(cc=='-')ff=-1; cc=getchar(); } while(cc<='9'&&cc>='0'){ kk=kk*10+cc-'0'; cc=getchar(); } return ff*kk; } void min_que(){ l=1;r=0; for(int i(1);i<=n;++i){ while(l<=r&&h[l]+k<=i)++l; while(l<=r&&a[h[r]]>=a[i])--r; h[++r]=i; if(i>=k)printf("%d ",a[h[l]]); } puts(""); return; } void max_que(){ l=1;r=0; for(int i(1);i<=n;++i){ while(l<=r&&h[l]+k<=i)++l; while(l<=r&&a[h[r]]<=a[i])--r; h[++r]=i; if(i>=k)printf("%d ",a[h[l]]); } return; } int main(){ n=read();k=read(); for(int i(1);i<=n;++i)a[i]=read(); min_que(); max_que(); return 0; }
P3811 【模板】模意义下的乘法逆元
#include<bits/stdc++.h> using namespace std; const int N=3000005; int n,p; int inv[N]; int read(){ int ff=1,kk=0; char cc=getchar(); while(cc>'9'||cc<'0'){ if(cc=='-')ff=-1; cc=getchar(); } while(cc<='9'&&cc>='0'){ kk=kk*10+cc-'0'; cc=getchar(); } return ff*kk; } int main(){ n=read(),p=read(); inv[1]=1;puts("1"); for(int i(2);i<=n;++i){ inv[i]=1ll*(p-p/i)*inv[p%i]%p; printf("%d\n",inv[i]); } return 0; }

注意:a,p 互质才有逆元,4 种求逆元方式

P4549 【模板】裴蜀定理
#include<bits/stdc++.h> using namespace std; const int N=1000005; int n; int ans; int read(){ int ff=1,kk=0; char cc=getchar(); while(cc>'9'||cc<'0'){ if(cc=='-')ff=-1; cc=getchar(); } while(cc<='9'&&cc>='0'){ kk=kk*10+cc-'0'; cc=getchar(); } return ff*kk; } int gcd(int x,int y){ if(!y)return x; return gcd(y,x%y); } int main(){ n=read();ans=read(); for(int i(2);i<=n;++i)ans=gcd(ans,read()); if(ans>=0)printf("%d",ans); else printf("%d",-ans); return 0; }
P5788 【模板】单调栈
#include<bits/stdc++.h> using namespace std; const int N=3000005; int n,a[N]; int s[N],tp; int res[N]; int read(){ int ff=1,kk=0; char cc=getchar(); while(cc>'9'||cc<'0'){ if(cc=='-')ff=-1; cc=getchar(); } while(cc<='9'&&cc>='0'){ kk=kk*10+cc-'0'; cc=getchar(); } return ff*kk; } int main(){ n=read(); for(int i(1);i<=n;++i)a[i]=read(); for(int i(n);i;--i){ while(tp&&a[s[tp]]<=a[i])--tp; res[i]=s[tp]; s[++tp]=i; } for(int i(1);i<=n;++i)printf("%d ",res[i]); return 0; }
P1883 【模板】三分 | 函数
#include<bits/stdc++.h> using namespace std; const int N=10005; const double eps=1e-10; int T,n; int a[N],b[N],c[N]; int read(){ int ff=1,kk=0; char cc=getchar(); while(cc>'9'||cc<'0'){ if(cc=='-')ff=-1; cc=getchar(); } while(cc<='9'&&cc>='0'){ kk=kk*10+cc-'0'; cc=getchar(); } return ff*kk; } double check(double x){ double ans=a[1]*x*x+b[1]*x+c[1]; for(int i(2);i<=n;++i)ans=max(ans,a[i]*x*x+b[i]*x+c[i]); return ans; } int main(){ T=read(); while(T--){ n=read(); for(int i(1);i<=n;++i)a[i]=read(),b[i]=read(),c[i]=read(); double l=0,r=1000; while(l+eps<r){ //cout<<l<<" "<<r<<'\n'; double mid1=l+(r-l)/3.0,mid2=r-(r-l)/3.0; if(check(mid1)>check(mid2))l=mid1; else r=mid2; } printf("%.4f\n",check(l)); } return 0; }

注意:数据类型,数组大小。

B3611 【模板】传递闭包
#include<bits/stdc++.h> using namespace std; const int N=105; int n,a[N][N]; int read(){ int ff=1,kk=0; char cc=getchar(); while(cc>'9'||cc<'0'){ if(cc=='-')ff=-1; cc=getchar(); } while(cc<='9'&&cc>='0'){ kk=kk*10+cc-'0'; cc=getchar(); } return ff*kk; } int main(){ n=read(); for(int i(1);i<=n;++i) for(int j(1);j<=n;++j)a[i][j]=read(); for(int k(1);k<=n;++k) for(int i(1);i<=n;++i) for(int j(1);j<=n;++j)a[i][j]|=a[i][k]&a[k][j]; for(int i(1);i<=n;++i){ for(int j(1);j<=n;++j)printf("%d ",a[i][j]); puts(""); } return 0; }
P8306 【模板】字典树
#include<bits/stdc++.h> using namespace std; const int N=3000005,M=65; int T,n,q; char c[N]; int len; int a[N][M],num[N],cnt; int read(){ int ff=1,kk=0; char cc=getchar(); while(cc>'9'||cc<'0'){ if(cc=='-')ff=-1; cc=getchar(); } while(cc<='9'&&cc>='0'){ kk=kk*10+cc-'0'; cc=getchar(); } return ff*kk; } void dfs(int x){ num[x]=0; for(int i(0);i<62;++i)if(a[x][i]){ dfs(a[x][i]); a[x][i]=0; } return; } void cl(){ cnt=0; dfs(0); return; } void build(){ int qwq,nw=0; for(int i(0);i<len;++i){ if(c[i]>='a'&&c[i]<='z')qwq=c[i]-'a'; else if(c[i]>='A'&&c[i]<='Z')qwq=c[i]-'A'+26; else qwq=c[i]-'0'+52; if(!a[nw][qwq])a[nw][qwq]=++cnt; nw=a[nw][qwq]; ++num[nw]; } return; } int find(){ int qwq,nw=0; for(int i(0);i<len;++i){ if(c[i]>='a'&&c[i]<='z')qwq=c[i]-'a'; else if(c[i]>='A'&&c[i]<='Z')qwq=c[i]-'A'+26; else qwq=c[i]-'0'+52; if(!a[nw][qwq])return 0; nw=a[nw][qwq]; } return num[nw]; } int main(){ T=read(); while(T--){ cl(); n=read();q=read(); for(int i(1);i<=n;++i){ scanf(" %s",c); len=strlen(c); build(); } while(q--){ scanf(" %s",c); len=strlen(c); printf("%d\n",find()); } } return 0; }
P3367 【模板】并查集
#include<bits/stdc++.h> using namespace std; const int N=10005; int n,m,fa[N]; int read(){ int ff=1,kk=0; char cc=getchar(); while(cc>'9'||cc<'0'){ if(cc=='-')ff=-1; cc=getchar(); } while(cc<='9'&&cc>='0'){ kk=kk*10+cc-'0'; cc=getchar(); } return ff*kk; } int find(int x){ if(fa[x]==x)return x; return fa[x]=find(fa[x]); } int main(){ n=read();m=read(); for(int i(1);i<=n;++i)fa[i]=i; while(m--){ int z=read(),x=read(),y=read(); if(z==1)fa[find(x)]=find(y); else{ if(find(x)==find(y))puts("Y"); else puts("N"); } } return 0; }
P3374 【模板】树状数组 1
#include<bits/stdc++.h> using namespace std; const int N=500005; int n,m; int c[N]; int read(){ int ff=1,kk=0; char cc=getchar(); while(cc>'9'||cc<'0'){ if(cc=='-')ff=-1; cc=getchar(); } while(cc<='9'&&cc>='0'){ kk=kk*10+cc-'0'; cc=getchar(); } return ff*kk; } int lowbit(int i){ return i&(-i); } void add(int x,int i){ for(;i<=n;i+=lowbit(i))c[i]+=x; return; } int find(int i){ int ans=0; for(;i;i-=lowbit(i))ans+=c[i]; return ans; } int main(){ n=read();m=read(); for(int i(1);i<=n;++i)add(read(),i); while(m--){ int op=read(),x=read(),y=read(); if(op==1)add(y,x); else printf("%d\n",find(y)-find(x-1)); } return 0; }
P3371 【模板】单源最短路径(弱化版)
#include<bits/stdc++.h> using namespace std; const int N=10005; int n,m,s; vector<pair<int,int> > g[N]; bool vis[N]; unsigned int dis[N]; int read(){ int ff=1,kk=0; char cc=getchar(); while(cc>'9'||cc<'0'){ if(cc=='-')ff=-1; cc=getchar(); } while(cc<='9'&&cc>='0'){ kk=kk*10+cc-'0'; cc=getchar(); } return ff*kk; } queue<int> q; int main(){ //2147483647 //cout<<0x7f7f7f7f; n=read();m=read();s=read(); while(m--){ int u=read(),v=read(),w=read(); g[u].emplace_back(make_pair(v,w)); } for(int i(1);i<=n;++i)dis[i]=2147483647; dis[s]=0; vis[s]=1; q.push(s); while(q.size()){ int x=q.front();q.pop(); vis[x]=0; for(pair<int,int> v:g[x])if(dis[v.first]>dis[x]+v.second){ dis[v.first]=dis[x]+v.second; if(!vis[v.first]){ vis[v.first]=1; q.push(v.first); } } } for(int i(1);i<=n;++i)printf("%d ",dis[i]); return 0; }
P3368 【模板】树状数组 2
#include<bits/stdc++.h> using namespace std; const int N=500005; int n,m; int c[N]; int read(){ int ff=1,kk=0; char cc=getchar(); while(cc>'9'||cc<'0'){ if(cc=='-')ff=-1; cc=getchar(); } while(cc<='9'&&cc>='0'){ kk=kk*10+cc-'0'; cc=getchar(); } return ff*kk; } int lowbit(int i){ return i&(-i); } void add(int x,int i){ for(;i<=n;i+=lowbit(i))c[i]+=x; return; } int find(int i){ int ans=0; for(;i;i-=lowbit(i))ans+=c[i]; return ans; } int main(){ n=read();m=read(); int lst=0,nw; for(int i(1);i<=n;++i){ nw=read(); add(nw-lst,i); lst=nw; } while(m--){ int op=read(),x=read(); if(op==1){ int y=read(),k=read(); add(k,x);add(-k,y+1); } else printf("%d\n",find(x)); } return 0; }
P3379 【模板】最近公共祖先(LCA) tarjan
#include<bits/stdc++.h> using namespace std; const int N=500005; int n,m,s; vector<int> g[N]; vector<pair<int,int> > ques[N]; int ans[N]; int read(){ int ff=1,kk=0; char cc=getchar(); while(cc>'9'||cc<'0'){ if(cc=='-')ff=-1; cc=getchar(); } while(cc<='9'&&cc>='0'){ kk=kk*10+cc-'0'; cc=getchar(); } return ff*kk; } bool vis[N]; int fa[N]; int find(int x){ if(fa[x]==x)return x; return fa[x]=find(fa[x]); } void tarjan(int x){ vis[x]=1; for(int v:g[x])if(!vis[v]){ tarjan(v); fa[v]=x; } for(pair<int,int> v:ques[x])if(vis[v.first]) ans[v.second]=find(v.first); return; } int main(){ n=read();m=read();s=read(); for(int i(1);i<n;++i){ int x=read(),y=read(); g[x].emplace_back(y); g[y].emplace_back(x); } for(int i(1);i<=m;++i){ int x=read(),y=read(); ques[x].emplace_back(make_pair(y,i)); ques[y].emplace_back(make_pair(x,i)); } for(int i(1);i<=n;++i)fa[i]=i; tarjan(s); for(int i(1);i<=m;++i)printf("%d\n",ans[i]); return 0; }
P3379 【模板】最近公共祖先(LCA) 倍增
#include<bits/stdc++.h> using namespace std; const int N=500005,M=20; int n,m,s; vector<int> g[N]; int fa[N][M],dep[N]; int read(){ int ff=1,kk=0; char cc=getchar(); while(cc>'9'||cc<'0'){ if(cc=='-')ff=-1; cc=getchar(); } while(cc<='9'&&cc>='0'){ kk=kk*10+cc-'0'; cc=getchar(); } return ff*kk; } void dfs(int x){ for(int i(1);i<=18;++i)fa[x][i]=fa[fa[x][i-1]][i-1]; for(int v:g[x])if(v!=s&&!fa[v][0]){ fa[v][0]=x; dep[v]=dep[x]+1; dfs(v); } return; } int find(int x,int y){ if(dep[x]<dep[y])swap(x,y); if(dep[x]>dep[y]) for(int i(18);i>=0;--i) if(dep[fa[x][i]]>=dep[y])x=fa[x][i]; if(x==y)return x; for(int i(18);i>=0;--i)if(fa[x][i]!=fa[y][i])x=fa[x][i],y=fa[y][i]; return fa[x][0]; } int main(){ //cout<<log2(N);18... n=read();m=read();s=read(); for(int i(1);i<n;++i){ int x=read(),y=read(); g[x].emplace_back(y); g[y].emplace_back(x); } dep[s]=1; dfs(s); for(int i(1);i<=m;++i)printf("%d\n",find(read(),read())); return 0; }
P3366 【模板】最小生成树
#include<bits/stdc++.h> using namespace std; const int N=5005,M=200005; int n,m; int fa[N]; tuple<int,int,int> t[M]; int ans,cnt; int read(){ int ff=1,kk=0; char cc=getchar(); while(cc>'9'||cc<'0'){ if(cc=='-')ff=-1; cc=getchar(); } while(cc<='9'&&cc>='0'){ kk=kk*10+cc-'0'; cc=getchar(); } return ff*kk; } int find(int x){ if(x==fa[x])return x; return fa[x]=find(fa[x]); } int main(){ n=read();m=read(); for(int i(1);i<=n;++i)fa[i]=i; for(int i(1);i<=m;++i)t[i]=make_tuple(read(),read(),read()); sort(t+1,t+1+m); for(int i(1);i<=m;++i){ int x=get<1>(t[i]),y=get<2>(t[i]); if(find(x)==find(y))continue; fa[fa[x]]=fa[y]; ans+=get<0>(t[i]);++cnt; } if(cnt<n-1)puts("orz"); else printf("%d",ans); return 0; }
P3385 【模板】负环
#include<bits/stdc++.h> using namespace std; const int N=2005; int T,n,m; vector<pair<int,int> > g[N]; long long dis[N]; int ti[N]; bool vis[N]; int read(){ int ff=1,kk=0; char cc=getchar(); while(cc>'9'||cc<'0'){ if(cc=='-')ff=-1; cc=getchar(); } while(cc<='9'&&cc>='0'){ kk=kk*10+cc-'0'; cc=getchar(); } return ff*kk; } queue<int> q; bool spfa(){ while(q.size())q.pop(); memset(ti,0,sizeof ti); memset(vis,0,sizeof vis); memset(dis,0x3f,sizeof dis); dis[1]=0;vis[1]=1;ti[1]=1; q.push(1); while(q.size()){ int x=q.front();q.pop(); vis[x]=0; for(pair<int,int> v:g[x])if(dis[v.first]>dis[x]+v.second){ dis[v.first]=dis[x]+v.second; ++ti[v.first]; if(ti[v.first]>n)return 1; if(!vis[v.first]){ vis[v.first]=1; q.push(v.first); } } } return 0; } int main(){ T=read(); while(T--){ n=read(),m=read(); while(m--){ int u=read(),v=read(),w=read(); g[u].push_back({v,w}); if(w>=0)g[v].push_back({u,w}); } if(spfa())puts("YES"); else puts("NO"); for(int i(1);i<=n;++i)g[i].clear(); } return 0; }

注意:审题,初始化。

P3865 【模板】ST 表 && RMQ 问题
#include<bits/stdc++.h> using namespace std; const int N=100005; int n,m,st[N][20]; int read(){ int ff=1,kk=0; char cc=getchar(); while(cc>'9'||cc<'0'){ if(cc=='-')ff=-1; cc=getchar(); } while(cc<='9'&&cc>='0'){ kk=kk*10+cc-'0'; cc=getchar(); } return ff*kk; } int find(int l,int r){ int qwq=(int)(log(r-l+1)/log(2)); return max(st[l][qwq],st[r-(1<<qwq)+1][qwq]); } int main(){ //cout<<log2(N);16.... n=read();m=read(); for(int i(1);i<=n;++i)st[i][0]=read(); for(int j(1);(1<<j)<=n;++j) for(int i(1);i+(1<<j)-1<=n;++i) st[i][j]=max(st[i][j-1],st[i+(1<<j-1)][j-1]); while(m--){ int l=read(),r=read(); printf("%d\n",find(l,r)); } return 0; }
P4779 【模板】单源最短路径(标准版)
#include<bits/stdc++.h> using namespace std; const int N=100005; int n,m,s; vector<pair<int,int> > g[N]; bool vis[N]; int dis[N]; int read(){ int ff=1,kk=0; char cc=getchar(); while(cc>'9'||cc<'0'){ if(cc=='-')ff=-1; cc=getchar(); } while(cc<='9'&&cc>='0'){ kk=kk*10+cc-'0'; cc=getchar(); } return ff*kk; } priority_queue<pair<int,int> > pq; void dij(){ memset(dis,0x3f,sizeof dis); dis[s]=0;pq.push({0,s}); while(pq.size()){ int x=pq.top().second;pq.pop(); if(vis[x])continue; vis[x]=1; for(pair<int,int> v:g[x])if(dis[v.first]>dis[x]+v.second){ dis[v.first]=dis[x]+v.second; pq.push({-dis[v.first],v.first}); } } return; } int main(){ n=read();m=read();s=read(); while(m--){ int u=read(),v=read(),w=read(); g[u].push_back({v,w}); } dij(); for(int i(1);i<=n;++i)printf("%d ",dis[i]); return 0; }
P5431 【模板】模意义下的乘法逆元 2
#include<bits/stdc++.h> using namespace std; const int N=5000005; int n,k,p; int a[N],qz[N],hz[N],ans; int read(){ int ff=1,kk=0; char cc=getchar(); while(cc>'9'||cc<'0'){ if(cc=='-')ff=-1; cc=getchar(); } while(cc<='9'&&cc>='0'){ kk=kk*10+cc-'0'; cc=getchar(); } return ff*kk; } int qp(int x,int y){ int ans=1; while(y){ if(y&1)ans=1ll*ans*x%p; x=1ll*x*x%p; y>>=1; } return ans; } int main(){ n=read();p=read();k=read(); qz[0]=1;hz[n+1]=1; for(int i(1);i<=n;++i){ a[i]=read(); qz[i]=1ll*qz[i-1]*a[i]%p; } for(int i(n);i;--i)hz[i]=1ll*hz[i+1]*a[i]%p; int kk=1; for(int i(1);i<=n;++i){ kk=1ll*kk*k%p; ans=(ans+1ll*hz[i+1]*qz[i-1]%p*kk%p)%p; } printf("%d",1ll*ans*qp(qz[n],p-2)%p); return 0; }

__EOF__

本文作者MX_muxi
本文链接https://www.cnblogs.com/muxijiang123/p/18503111.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   MX_muxi  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
Title
点击右上角即可分享
微信分享提示