解题思路:

只要看(A-V)*K 这个公式的更新值是否大于等于A ,大于的话继续循环,否则报错

注意一点,数据会爆int

WA代码:

#include<stdio.h>
int main(){
long long n ,m, v, k;
int t;
scanf("%d",&t);
while(t--){
scanf("%lld%lld%lld%lld",&n,&m,&v,&k);
int cnt = ;
while(m < n){
if( (m - v) * k <= m ){
cnt = -;
break;
}
m = (m - v) * k ;
++cnt;
}
printf("%d\n",cnt);
}
return ;
}

AC代码:

#include <iostream>
using namespace std;
int main(){
long long n ,m, v, k;
int t;
cin >> t;
while(t--){
cin >> n >> m >> v >> k;
int cnt = ;
while(m < n){
if( (m - v) * k <= m ){
cnt = -;
break;
}
m = (m - v) * k ;
++cnt;
}
cout << cnt << endl;
}
return ;
}

AC代码(比较复杂):

#include<stdio.h>
#include<math.h>
int main(){
long long n ,m, v, k;
int t;
scanf("%d",&t);
while(t--){
scanf("%I64d%I64d%I64d%I64d",&n,&m,&v,&k);
long long ans = m;
if(ans >= n){
printf("0\n");
continue;
}
if((ans - v) * k <= ans || ans - v <= || k <= ||(ans - v) * k < ){
printf("-1\n");
continue;
}
int cnt = ;
while(ans < n){
++cnt;
if(ans - v <= || (ans - v) * k < ){
cnt = -;
break;
}
ans = (ans - v) * k ;
}
printf("%d\n",cnt);
}
return ;
}

最新文章

  1. unslider.js 实现移动web轮播
  2. 【英文版本】Android开源项目分类汇总
  3. 配置fabric-crashlytics教程
  4. PL/SQL不支持64位Oracle Client 解决办法
  5. SpringMVC 返回 html 视图页面,SpringMVC与Servlet,Servlet重定向与转发
  6. JQuery中国省市区无刷新三级联动查询
  7. 30岁IT男连续工作一个月 突然失聪
  8. Oracle学习第二天---Profile的使用
  9. js获取IP地址的方法小结
  10. 处理emacs-org模式TODO的一个脚本
  11. .NET MD5加密解密代码
  12. 高通平台MSM8916LCM模块移植(一)-bootloader部分
  13. 【踩坑】利用fastjson反序列化需要默认构造函数
  14. static 静态与非静态的区别
  15. stored information about method csdn
  16. Windows Community Toolkit 3.0 - InfiniteCanvas
  17. dokuwiki 安装配置
  18. alias命令详解:给命令设置别名
  19. JavaBean 和 pojo 的区别
  20. UVA 11796 Dog Distance(几何)

热门文章

  1. IOS 学习笔记(7) 控件 分隔栏控件(UISegmentControl)的使用方法
  2. Stack trace对性能的影响
  3. Linux下使用ps命令来查看Oracle相关的进程
  4. 让程序只运行一个实例(Delphi篇)(三种方法,其中使用全局原子的方法比较有意思)
  5. Tomcat+redis+nginx配置
  6. 基于Visual C++2013拆解世界五百强面试题--题3-打印螺旋数组
  7. HDU 1568 Fibonacci
  8. 统计难题(trie树)
  9. BFG
  10. FreeCodeCamp:Confirm the Ending