T10 求调
  • 板块学术版
  • 楼主FormulaOne
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/6/23 17:23
  • 上次更新2023/11/3 13:15:48
查看原帖
T10 求调
180406
FormulaOne楼主2023/6/23 17:23

rt,理论上不会超时的吧

#include <iostream>
#include <cstdio>
#include <cstring>
#define int long long

using namespace std;

int a[1000001],b[1000001],pd[1001];

signed main()
{
    int n,m,x,y,p,t,cnt,k;
    cin >> n >> x >> y >> p ;
    for( int i = 1 ; i <= n ; i ++ )
    {
        cin >> a[i];
        if( a[i] >= 1000 )
        {
            b[i] = 0x3f3f3f3f;
            continue;
        }
        t = a[i];
        cnt = 0;
        memset( pd , 0 , sizeof( pd ) );
        while( !pd[t] )
        {
            pd[t] ++;
            cnt ++;
            t = ( x * t % p + y ) % p;
        }
        if( t != a[i] ) b[i] = 0x3f3f3f3f;
        else b[i] = cnt;
//        cout << b[i] << endl;
    } 
    cin >> m;
    for( int i = 1 ; i <= m ; i ++ )
    {
        cin >> k;
        cnt = 0;
        for( int j = 1 ; j <= n ; j ++ )
            if( k % b[j] == 0 )
                cnt ++;
        cout << cnt << endl;
    }
    return 0;
}
2023/6/23 17:23
加载中...