Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
32374 22级廖思学 【S】T1 C++ 解答错误 10 25 MS 3788 KB 1111 2024-09-08 16:16:15

Tests(2/20):


#include<bits/stdc++.h> using namespace std; #define int long long const int N=1e5+10,M=998244353; int n,m,k,ans,a[N],b[N],pra[N],prb[N],D[N],mp[N],cnt; inline void init(){ for(int i=0;i<=1;i++)mp[i]=0; mp[0]=1; } signed main(){ // freopen("1.in","r",stdin); cin>>n>>m>>k; for(int i=1;i<=n;i++){ cin>>a[i]; pra[i]=pra[i-1]+a[i]; } for(int i=1;i<=m;i++){ cin>>b[i]; prb[i]=prb[i-1]+b[i]; } for(int i=1;i*i<=k;i++){ if(k%i==0)D[++cnt]=i; } for(int j=1;j<=cnt;j++){ int d=D[j]; if(k%d==0){ init(); int cta=0,ctb=0; for(int i=1;i<=n;i++){ cta+=mp[pra[i]-d];cta%=M; mp[pra[i]]++; } init(); for(int i=1;i<=m;i++){ ctb+=mp[prb[i]-k/d];cta%=M; mp[prb[i]]++; } ans+=(cta*ctb)%M;ans%=M; // if(d!=k/d){ init(); cta=0;ctb=0; for(int i=1;i<=n;i++){ cta+=mp[pra[i]-k/d];cta%=M; mp[pra[i]]++; } init(); for(int i=1;i<=m;i++){ ctb+=mp[prb[i]-d];cta%=M; mp[prb[i]]++; } ans+=(cta*ctb)%M;ans%=M; } } } cout<<ans<<endl; return 0; }


测评信息: