unsigned int 只能用scanf来输入?? 用cin一直报错
然后题目要求是 unsigned int 比赛时我们 用了 unsigned long long 结果样例都不对。。。。
结果要用ULL 但是过程要用uint
然后还学到一个函数 nth_element(a+1,a+m+1,a+n+1) 第m大的数一定在第m个位置上,前面比他大,后面比他小,但没有顺序(时间复杂度是O(n)的)
这道题只需要枚举前100大的来暴力就行。。
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#include<bits/stdc++.h>
using namespace std;
typedef unsigned uint;
typedef unsigned long long ULL;
const int N = 1e7 + 10;
uint a[N],x,y,z;
uint read(){
uint t;
x^=x<<16;
x^=x>>5;
x^=x<<1;
t=x;
x=y;
y=z;
z=t^x^y;
return z;
}
uint gcd(uint a, uint b)
{
if(b == 0) return a;
return gcd(b,a%b);
}
int main()
{
uint A,B,C;
int T,cas = 0;
cin>>T;
while(T--)
{
int n;
cin>>n;
scanf("%u%u%u",&x,&y,&z);
//scanf("%d",&n);
//cin>>A>>B>>C;
for(int i=1;i<=n;i++) a[i] = read();
int m = max(0,n-100);
nth_element(a+1,a+m+1,a+n+1);
ULL ans = 0;
for (int i=m;i<=n;i++)
for (int j=i+1;j<=n;j++)
ans=max(ans,1ULL*a[i]/gcd(a[i],a[j])*a[j]);
printf("Case #%d: %llu\n",++cas,ans);
}
}