第一次参加百度之星比赛的第一题

参加百度之星比赛遇到第一题,原本以为是智商问题,实际上是因为未使用64位整数导致。经过半天摸索,改用`long long int`类型后顺利解决,深刻教训,提醒大家注意数据类型的使用。
摘要由CSDN通过智能技术生成
#include<stdio.h>

long long int N = 0;
long long int V = 0;
long long int K = 0;


long long int funct(long long int m,long long int num)
{
    if(m >= N)
        return 0;
    else if(m < V)
        return -1;

    long long int temp = (m - V) * K;
    num ++;

    if(temp == m)
        return -1;

    if(temp >=  N)
        return num;
    else
        return funct(temp,num);

}

int main()
{
    int  t = 0;
    long long int M = 0;
    int Num = 0;
    scanf("%d",&t);
    while(t --)
    {
        scanf("%lld %lld %lld %lld",&N,&M,&V,&K);
        if(N <= M)
        printf("0\n");
            else if(( N!=0 && K == 0)||((M < N)&& (K == 1)))
            printf("-1\n");
        else
        {
             printf("%lld\n",funct(M ,Num));
        }
    }

    return 0;
}

无语。对于第一道大题就是个坑。一直以为是自己的智商问题,结果被坑了大半天才发现要用64位啊啊啊啊!!!!!坑啊。我去。一个下午就这样被坑了。泪奔~泪奔~~把类型改成long long int就AC了。我想哭啊。就这样摆了一道。教训。深深的教训······留下代码作纪念吧。 大哭 大哭 大哭
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值