比赛 EYOI暨SBOI暑假快乐赛4th 评测结果 AAEEEEEEEE
题目名称 选题 最终得分 20
用户昵称 ┭┮﹏┭┮ 运行时间 1.441 s
代码语言 C++ 内存使用 4.74 MiB
提交时间 2022-06-28 09:43:26
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const long long N = 1000000007;
int n,m,q,z[50010],t,s;
unsigned long long a[100] = {1,1},p,ss;
long long C(long long x,long long y){
    return a[x] / (a[y] * a[x-y]);
}
bool sou(int x){
    if(x == 1)return 0;
    for(int i = 2;i <= sqrt(x);i++){
        if(x % i == 0)return 0;
    }
    return 1;
}
int main(){
    freopen("mathproblem.in","r",stdin);
    freopen("mathproblem.out","w",stdout);
    for(int i = 2;i <= 100;i++){
        a[i] = a[i-1] * i;
    }
    //cout<<a[100]<<endl;
    cin>>n>>m>>q;
    for(int i = 1;i <= n;i++){
        if(n % i == 0){
            p += C(n,n/i);
        }
    }
    for(int i = 1;i <= m;i++){
        if(sou(i)){
            t++;
            z[t] = i;
        }
    }
//    cout<<p<<endl;
//    for(int i = 1;i <= t;i++)
//        cout<<z[i]<<' ';
//    cout<<endl;
    sort(z+1,z+1+t);
    for(int i = 1;i <= q;i++){
        ss = 1;
        cin>>s;
        for(int j = 1;j <= s;j++){
            int u;
            cin>>u;
            ss *= z[u];
        }
        cout<<p % ss<<endl;
    }
    
    return 0;
}