#include <bits/stdc++.h>
using namespace std;
#define int long long
#define mpr make_pair
#define fr first
#define sc second
inline int read(){
int res=0,f=1;char c=getchar();
while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}
while (c>='0'&&c<='9') {res=res*10+(c-'0');c=getchar();}
return res*f;
}
const int N=2e5+5;
int T=read(),n,cnt,a[N],c[N];
int sx(int a,int b,int y){
long double log_a=log(a);
long double log_b=log(b);
int x=ceil((y*log_b)/log_a);
if (x==0) return 1;
return x;
}
signed main(){
while (T--){
n=read();
for (int i=1;i<=n;i++) a[i]=read(),c[i]=0;
c[1]=1,cnt=0;
for (int i=2;i<=n;i++){
if (a[i]==1&&a[i-1]>1){
cnt=-1;
break;
}
else if (a[i]==1&&a[i-1]<=1){
c[i]=1;
continue;
}
c[i]=sx(a[i],a[i-1],(1ll<<(c[i-1]-1)));
c[i]=(c[i]==1?1:log2(c[i]-1)+2),cnt+=c[i]-1;
}
// for (int i=1;i<=n;i++) cout<<c[i]<<' ';cout<<'\n';
cout<<cnt<<'\n';
}
return 0;
}
为什么 WA #4?