题目链接:P6546
这是题目:
蜗牛爬井问题:一只蜗牛要爬上 v 米高的树桩,它每天白天向上爬 a 米,晚上向下掉 b 米。几天之后它可以爬到树桩顶?
输入:
2 1 5
输出:
4
讲解开始:
首先还是正常输入:
int a,b,v;
cin>>a>>b>>v;
然后经入一个函数num:
cout<<num(1.0*(v-a),(a-b))+1<<endl;
之所以要乘以1.0是因为要向上取整!而这个num函数的两个参数则是“蜗牛白天爬了多少米”也就是“v-a”,另一个是“蜗牛一天能爬多少米”也就是“a-b”。
接下来是函数:
(x是函数的一个入参,y也是)如果x是y的倍数的话,那么直接返回x/y即可。因为学过除法的都知道x/y的商代表着x中有多少个y(也就是几天)!
if(x%y==0){
return x/y; //x代表蜗牛白天爬了多少米 y代表蜗牛一天怕了多少米
}
那如果 x不是y的倍数咋办?只需那么就返回x/y天再加上1天就可以了!因为x/y求的是要多少天,那么只需“+1”就可以求出要多少天了!
else{
return x/y+1;//如果余数不为0的话 说明y是不x的倍数,那么就返回x/y天再加上1天。
}
完整代码如下:
#include <bits/stdc++.h>
using namespace std;
int num(int x,int y){
if(x%y==0){
return x/y;//如果余数为 0 的话 说明y是x的倍数,直接相除就可以求出需要多少天
}
else{
return x/y+1;//如果余数不为0的话 说明y是不x的倍数,那么就返回x/y天再加上1天。
}
}
int main(){
int a,b,v;
cin>>a>>b>>v;
cout<<num(1.0*(v-a),(a-b))+1<<endl;//输出时记的向上取整 乘以1.0!!!
return 0;
}
讲解完毕!再见!