腾讯马拉松 第五场 第一题

来源:互联网 发布:乐股软件官网 编辑:程序博客网 时间:2024/05/01 12:20

一定要考虑清楚,情况,首先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;}


原创粉丝点击