《我的代码有这么AI吗?》
2026-06-26 20:48:15
发布于:北京
我的代码有这么AI吗?
不说了
放代码
#include<cmath>
#include<cstdio>
#include<algorithm>
#define fp(i,a,b) for(int i=a,I=b;i<=I;++i)
#define file(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout)
using namespace std;
const int N=1e6+5,E=2.2N;
typedef int arr[N];
struct eg{int nx,n,k,w;}e[E];
int n,m,k,M,ce,fi[E],p[2001],q[2001];arr is,pr,mu,Smu,f;
int g(int n,int k){
if(!n||(n<=M&&k==1))return Smu[n];
int x=(1LLn2017+k)%E;
for(int i=fi[x];i;i=e[i].nx)if(e[i].nn&&e[i].kk)return e[i].w;
e[++ce]=eg{fi[x],n,k,0};fi[x]=ce;int&w=e[ce].w;
if(k==1){
w=1;int i=2,j=sqrt(n),x;
for(;i<=j;++i)w-=g(n/i,1);
for(;i<=n;i=j+1)x=n/i,j=n/x,w-=(j-i+1)g(x,1);
}else w=g(n,q[k])+g(n/p[k],k);
return w;
}
int gcd(int a,int b){return!b?a:gcd(b,a%b);}
inline int Sf(int x){return x/kf[k]+f[x%k];}
int main(){
#ifndef ONLINE_JUDGE
file("s");
#endif
scanf("%d%d%d",&n,&m,&k);
M=min(N-5,min(n,m));Smu[1]=mu[1]=1;
fp(i,2,M){
if(!is[i])pr[++pr[0]]=i,mu[i]=-1;
for(int j=1,x;j<=pr[0]&&(x=ipr[j])<=M;++j){
is[x]=1;if(i%pr[j])mu[x]=-mu[i];else break;
}Smu[i]=Smu[i-1]+mu[i];
}
fp(i,1,k)f[i]=f[i-1]+(gcd(i,k)1);
fp(i,2,k){
for(int j=2;;++j)if(i%j0&&!is[j]){p[i]=j;break;}
for(q[i]=i;q[i]%p[i]==0;)q[i]/=p[i];
}
int i=1,j=sqrt(min(n,m)),x,y,s,t=0;long long w=0;
for(;i<=j;++i,t=s)s=g(i,k),w+=1ll*(n/i)Sf(m/i)(s-t);
for(;i<=min(n,m);i=j+1,t=s)x=n/i,y=m/i,j=min(n/x,m/y),
s=g(j,k),w+=1llxSf(y)*(s-t);
printf("%lld",w);
return 0;
}
#include <bits/stdc++.h>
using namespace std;
#define Int register int
#define MAXX 20000005
#define mod 998244353
#define Gi 332748118
#define MAXN 800005
#define G 3
int quick_pow (int a,int b,int c){
int res = 1;
while (b){
if (b & 1) res = 1ll * res * a % c;
a = 1ll * a * a % c;
b >>= 1;
}
return res;
}
int l,limit,r[MAXN];
void NTT (int *a,int type){
for (Int i = 0;i < limit;++ i)
if (i < r[i]) swap (a[i],a[r[i]]);
for (Int mid = 1;mid < limit;mid <<= 1){
int Wn = quick_pow (type == 1 ? G : Gi,(mod - 1) / (mid << 1),mod);
for (Int R = mid << 1,j = 0;j < limit;j += R){
int w = 1;
for (Int k = 0;k < mid;++ k,w = 1ll * w * Wn % mod){
int x = a[j + k],y = 1ll * w * a[j + k + mid] % mod;
a[j + k] = (x + y) % mod,a[j + k + mid] = (x + mod - y) % mod;
}
}
}
if (type == 1) return ;
int Inv = quick_pow (limit,mod - 2,mod);
for (Int i = 0;i < limit;++ i) a[i] = 1ll * a[i] * Inv % mod;
}
template <typename T> inline void read (T &t){t = 0;char c = getchar();int f = 1;while (c < '0' || c > '9'){if (c == '-') f = -f;c = getchar();}while (c >= '0' && c <= '9'){t = (t << 3) + (t << 1) + c - '0';c = getchar();} t *= f;}
template <typename T,typename ... Args> inline void read (T &t,Args&... args){read (t);read (args...);}
template <typename T> inline void write (T x){if (x < 0){x = -x;putchar ('-');}if (x > 9) write (x / 10);putchar (x % 10 + '0');}
int N,M,S,L;
int A[MAXN],B[MAXN];
int inv[MAXX],fac[MAXX];
void SiteLin (int n){
for (Int i = 0;i <= n;++ i){
A[i] = (i & 1) ? mod - inv[i] : inv[i];
B[i] = 1ll * quick_pow (i,n,mod) * inv[i] % mod;
}
limit = 1,l = 0;
while (limit <= (n << 1)) limit <<= 1,l ;
for (Int i = 0;i < limit; i) r[i] = (r[i >> 1] >> 1) | ((i & 1) << l - 1);
NTT (A,1),NTT (B,1);
for (Int i = 0;i < limit;++ i) A[i] = 1ll * A[i] * B[i] % mod;
NTT (A,-1);
}
int C (int n,int m){
return 1ll * fac[n] * inv[m] % mod * inv[n - m] % mod;
}
signed main(){
read (N,M,S,L);
inv[0] = inv[1] = fac[0] = 1;int uu = max (N,L);
for (Int i = 1;i <= uu;++ i) fac[i] = 1ll * fac[i - 1] * i % mod;
inv[uu] = quick_pow (fac[uu],mod - 2,mod);
for (Int i = uu - 1;~i;-- i) inv[i] = 1ll * inv[i + 1] * (i + 1) % mod;
SiteLin (L);
while (S --){
int n,m,k;
read (n,m,k);int ans = 0;
for (Int i = 0;i <= min (L,min (m,k));++ i) ans = (ans + 1ll * A[i] * inv[m - i] % mod * fac[n - i] % mod * inv[k - i]) % mod;
write (1ll * ans * fac[m] % mod * fac[k] % mod * inv[n] % mod),putchar ('\n');
}
return 0;
}
全部评论 1
大哥,你能不能搞个代码块?
昨天 来自 广东
0

























有帮助,赞一个