分类:暴力 数据范围
传送门:https://www.zhixincode.com/contest/8/problem/A?problem_id=122
思路
n个数 删除n-2个数,也就是只剩两个数,可能情况就是6000×5999/2=18e6
在×n(6000) 复杂度ok 直接暴力,找出最大的数就可以了
有坑:把两个数拼起来的时候,就是两个1e9的数,需要19位
这个超出了ll(18位多一点) 的范围,所有要有无符号ull
AC代码
#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ll;
ll a[6005];
int main()
{
int t,n;
cin>>t;
for(int k=1;k<=t;k++)
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
ll maxx=0;
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
//拼起来
ll f=a[i],b=a[j];
while(b)
{
f*=10;
b/=10;
}
f+=a[j];
maxx=max(maxx,f);
}
}
cout<<"Case #"<<k<<": "<<maxx<<endl;
}
return 0;
}