插杆

1.题目:

 Problem Description

从甲地到乙地原来每隔a米要装一根电线杆,加上两端的两根,一共有b根电线杆,现在改成每隔c米装一根电线杆,除两端的两根不需要移动外,中途还有多少根不必移动?

 Input

输入数据有多组,每组数据包括三个不大于1000的整数a,b,c。

 Output

输出不必动的根数。

 Sample Input

45 53 60

 Sample Output

12

 

 

2.思路:

      不要想太多,这题只要先求出a与c的最小公倍数,然后看两端的距离是否能够整除这个最小公倍数,如果能够整除,那么不必移动的根数就是距离除以最小公倍数再减一,不过不能,就不用减一。刚开始我一直在纠结,本来我是想和a与c的关系有关,结果分3种情况来考虑,结果,我是想多了。

 

3.参考代码:

 

#include <iostream>
using namespace std;

int gcd(int a,int b){
	if(b==0) 
		return a;
	else
		return gcd(b,a%b); 
}

int lcm(int a,int b){
	return a/gcd(a,b)*b; 
}

int main() 
{
	int a,b,c,x,z;
	while(cin>>a>>b>>c)
	{
		x=lcm(a,c);
		z=a*(b-1);
		if(z%x==0)
			cout<<z/x-1<<endl;
		else
			cout<<z/x<<endl;
	}
	return 0;
}


 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值