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;
}