比赛 |
EYOI暨SBOI暑假快乐赛4th |
评测结果 |
AAWEEEEEEE |
题目名称 |
选题 |
最终得分 |
20 |
用户昵称 |
该账号已注销 |
运行时间 |
2.719 s |
代码语言 |
C++ |
内存使用 |
26.39 MiB |
提交时间 |
2022-06-28 09:35:28 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long n,m,prime[50010]={0},cnt=1,q,cnt2=0,p=0;
long long v[50010]={0},zy[50010]={0},c[2010][2010];
int pr()
{
for(int i=2;i<=m;i++)
{
if(v[i]==0)
{
v[i]=i;
prime[cnt++]=i;
}
for(int j=1;j<=cnt;j++)
{
if(prime[j]<=v[i]&&prime[j]*i<=m)
{
v[i*prime[j]]=prime[j];
}
}
}
return 0;
}
int main(){
freopen("mathproblem.in","r",stdin);
freopen("mathproblem.out","w",stdout);
cin>>n>>m>>q;
pr();
for(int i=1;i<=n;i++)
if(n%i==0)
zy[++cnt2]=i;
for(int i=0;i<=n;i++)
{
c[i][i]=1;
c[i][0]=1;
}
for(long long i=1;i<=n;i++)
{
for(long long j=1;j<=min(i,n);j++)
{
c[i][j]=c[i-1][j]+c[i-1][j-1];
}
}
for(int i=1;i<=cnt2;i++)
{
p+=c[n][zy[i]];
}
for(int i=1;i<=q;i++)
{
int s;
long long Q=1;
cin>>s;
for(int j=1;j<=s;j++)
{
int x;
cin>>x;
Q*=prime[x];
}
cout<<p%Q<<endl;
}
return 0;
}