#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了。我想哭啊。就这样摆了一道。教训。深深的教训······留下代码作纪念吧。