蒟蒻求助!!!
查看原帖
蒟蒻求助!!!
133034
BetrayalObedience楼主2022/8/15 17:28
#include<cstdio>
#include<iostream>
using namespace std;
const int MAXN = 712;
unsigned long long n, a[MAXN + 1];
unsigned long long pos[10000001];
namespace Generator {
unsigned long long k1, k2;
unsigned long long thres;
inline unsigned long long xorShift128Plus() {
    unsigned long long k3 = k1, k4 = k2;
    k1 = k4, k3 ^= (k3 << 23), k2 = k3 ^ k4 ^ (k3 >> 17) ^ (k4 >> 26);
    return k2 + k4;
}

inline void generate() {
    for (unsigned long long i = 1; i <= n; ++i) {
        a[i] = xorShift128Plus() % thres;
    }
}
} 
int main() {
    scanf("%d", &n);
    scanf("%llu %llu %d", &Generator::k1, &Generator::k2, &Generator::thres);
    Generator::generate();
    a[0]=2147483647;
	for(unsigned long long i=n;i;--i)	pos[i]=(a[i]<a[pos[i+1]]?i:pos[i+1]);
	for(unsigned long long i=1;i<=n;++i)
	{
		if(a[i]==a[pos[i]])	continue;
		swap(a[i],a[pos[i]]),i=pos[i];
	}
	unsigned long long ans=0;
	for(unsigned long long i=1;i<=n;++i)	ans+=(unsigned long long)i*(unsigned long long)a[i];
	printf("%llu",ans);
    return 0;
}
2022/8/15 17:28
加载中...