耗时长约:1500毫秒:
#include<stdio.h>
#include<algorithm>
#include<iostream>
using namespace std;
int n;
int a[200000];
int sum;
int c=0;
void suan(int b){
while(b<c)
{b*=2;
sum++;
}
}
int main()
{
while(scanf("%d",&n),n){
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
if(c<a[i])c=a[i];
}
sum=0;
for(int i=0;i<n-1;i++){
suan(a[i]);
}
printf("%d\n",sum+c);
}
return 0;
}
耗时短:80毫秒。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <map>
using namespace std;
typedef long long LL;
const int maxn=200005;
int n,m;
int a[maxn];
int fun(int x)
{
int cnt=0;
while(x<m)
{
cnt++;
x=2*x;
}
return cnt;
}
int main()
{
while(scanf("%d",&n)!=EOF)
{
m=0;
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
m=max(m,a[i]);
}
int ans=m;
for(int i=1;i<=n;i++)
{
ans+=fun(a[i]);
}
printf("%d\n",ans);
}
return 0;
}
2000毫秒
#include<stdio.h>
#include<algorithm>
#include<iostream>
using namespace std;
int n;
int a[200000];
int c=0;
int main()
{
while(scanf("%d",&n),n){
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
if(c<a[i])c=a[i];
}
int sum=0;
for(int i=0;i<n-1;i++){
while(a[i]<c)
{a[i]*=2;
sum++;
}
}
printf("%d\n",sum+c);
}
return 0;
}