“P6546 [COCI2010-2011#2] PUŽ“讲解及代码(洛谷)​

题目链接: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;
}
​

讲解完毕!再见!

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值