一定要考虑清楚,情况,首先sumk=(k1+k2)^k*sum,然后需要按照k1+k2分情况讨论,具体见代码:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int t;
int n;
double k1,k2;
__int64 k,sum;
int tmp;
int main(){
scanf("%d",&t);
int cases=1;
while(t--){
scanf("%d%lf%lf%I64d",&n,&k1,&k2,&k);
printf("Case #%d: ",cases++);
sum=0;
for(int i=0;i<n;i++){
scanf("%d",&tmp);
sum+=tmp;
}
if(sum>k)
printf("0\n");
else if(k1+k2<=1&&k1+k2>=0||k1+k2<0&&k1+k2>=-1)
printf("inf\n");
else if(k1+k2<-1){
__int64 i;
for(i=2;;i+=2)
if(pow(k1+k2,i)*sum>k)
break;
printf("%I64d\n",i);
}
else if(k1+k2>1)
{
__int64 i;
for(i=1;;i++){
if(pow(k1+k2,i)*sum>k)
break;
}
printf("%I64d\n",i);
}
}
//system("pause");
return 0;
}