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