10分求助
查看原帖
10分求助
706760
xiaofeng_and_xiaoyu楼主2023/10/15 19:06

rt.

#include<bits/stdc++.h>
using namespace std;
#define int long long 
int a[10000010],s[10000010];
queue<int>x;
void generate_array(int n, int m, int seed) {
    unsigned x = seed;
    for (int i = 0; i < n; ++i) {
        x ^= x << 13;
        x ^= x >> 17;
        x ^= x << 5;
        a[i] = x % m + 1;
    }
}
signed main(){
    int n,m,seed;
    cin>>n>>m>>seed;
    generate_array(n,m,seed);
    for(int i=0;i<n;i++){
    	s[a[i]]++;
	}
	for(int i=1;i<=m;i++){
		while(s[i]){
			x.push(i);
			s[i]--;
		}
	}
	while(1){
		int a=x.front();
		x.pop();
		if(x.empty()){
		    cout<<a;
		    return 0;
		}
		int b=x.front();
		x.pop();
		x.push(max(min(a,b)*2,max(a,b)));
	}
}
2023/10/15 19:06
加载中...