QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#550849 | #9248. An Easy Math Problem | ucup-team052# | Compile Error | / | / | C++23 | 2.5kb | 2024-09-07 14:28:52 | 2024-09-07 14:28:52 |
Judging History
This is the latest submission verdict.
- [2024-10-31 22:36:43]
- hack成功,自动添加数据
- (/hack/1098)
- [2024-10-31 22:13:58]
- hack成功,自动添加数据
- (/hack/1096)
- [2024-10-31 22:00:43]
- hack成功,自动添加数据
- (/hack/1095)
- [2024-09-07 14:28:52]
- Judged
- Verdict: Compile Error
- Time: 0ms
- Memory: 0kb
- [2024-09-07 14:28:52]
- Submitted
answer
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define mod 998244353
int add(int x,int y) {return x+y>=mod?x+y-mod:x+y;}
int sub(int x,int y) {return x-y<0?x-y+mod:x-y;}
int mul(int x,int y) {return 1ULL*x*y%mod;}
#define N 5005
char k[N];
int p,x,g,pw[N],lg[N],vis[N];
int C[N][N];
int a[N];
const int i2=(mod+1)/2;
int Inv(int x)
{
int y=mod-2,ans=1;
while(y)
{
if(y&1) ans=mul(ans,x);
x=mul(x,x),y>>=1;
}
return ans;
}
int qpow(int x,int y)
{
int ans=1;
while(y)
{
if(y&1) ans=mul(ans,x);
x=mul(x,x),y>>=1;
}
return ans;
}
void dft(int f[])
{
static int g[N];
for(int i=0;i<p-1;i++)
{
g[i]=0;
for(int j=0;j<p-1;j++) g[i]=add(g[i],mul(f[j],pw[i*j%(p-1)]));
}
for(int i=0;i<p-1;i++) f[i]=g[i];
}
void idft(int f[])
{
static int g[N];
for(int i=0;i<p-1;i++)
{
g[i]=0;
for(int j=0;j<p-1;j++) g[i]=add(g[i],mul(f[j],pw[(p-1-i)*j%(p-1)]));
}
for(int i=0;i<p-1;i++) f[i]=g[i];
}
namespace fft
{
#define u64 unsigned long long
const int M=16400;
int rev[M],wn[M],lim,invlim;
void init(int len)
{
lim=2<<std::lg(len-1);
invlim=mod-(mod-1)/lim;
for(static int i=1;i<lim;i+=i)
{
wn[i]=1;
const int w=qpow(3,mod/i/2);
for(int j=1;j<i;j++) wn[i+j]=(u64)wn[i+j-1]*w%mod;
}
for(int i=1;i<lim;i++) rev[i]=rev[i>>1]>>1|(i%2*lim/2);
}
void DFT(int *a)
{
static u64 t[M];
for(int i=0;i<lim;i++) t[i]=a[rev[i]];
for(int i=1;i<lim;i+=i)
{
for(int k=i&(1<<19);k--;) if(t[k]>=mod*9ull) t[k]-=mod*9ull;
for(int j=0;j<lim;j+=i+i)
{
for(int k=0;k<i;k++)
{
const u64 x=mul(t[i+j+k],wn[i+k]);
t[i+j+k]=t[k+j]+(mod-x);
t[k+j]+=x;
}
}
}
for(int i=0;i<lim;i++) a[i]=t[i]%mod;
}
void IDFT(int *a)
{
DFT(a);
reverse(a+1,a+lim);
for(int i=0;i<lim;i++) a[i]=mul(a[i],invlim);
}
};
int b[N];
signed main() {
#ifdef xay5421
freopen("b.in","r",stdin);
#endif
scanf("%s",k+1); int l=strlen(k+1);
cin>>p>>x;
for(int i=2;i<p;i++)
{
g=i;
memset(vis,0,sizeof(vis));
int ok=1,cur=1;
for(int j=0;j<p-1;j++)
{
if(vis[cur]) ok=0;
pw[j]=cur,lg[cur]=j;
vis[cur]=1,cur=cur*g%p;
}
if(ok) break;
}
pw[0]=1;
for(int i=1;i<p;i++) pw[i]=mul(pw[i-1],g);
cout<<g<<endl;
for(int j=1;j<p-1;j++) printf("%d%c",lg[j]," \n"[j==p-2]);
C[0][0]=1;
for(int i=1;i<=p;i++)
{
C[i][0]=1;
for(int j=1;j<=i;j++) C[i][j]=(C[i-1][j]+C[i-1][j-1])%p;
}
for(int i=0;i<p;i++) for(int j=0;j<p;j++) if(C[i][j]) a[lg[C[i][j]]]++;
return 0;
}
/*
3
0 2 1 4 5
1356
623902763
*/
詳細信息
answer.code: In function ‘void fft::init(int)’: answer.code:62:21: error: ‘lg’ is not a member of ‘std’; did you mean ‘log’? 62 | lim=2<<std::lg(len-1); | ^~ | log answer.code: In function ‘int main()’: answer.code:103:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 103 | scanf("%s",k+1); int l=strlen(k+1); | ~~~~~^~~~~~~~~~