题目描述
兔子可以住在X轴上[1,L]区间的任意一个整数点上。无奈好日子不长久,两个邪恶国家在X轴上进行军备竞赛,它们以原点为基点,分别沿X轴发射M型和N型导弹,M,N均为整数,M型导弹的特征是凡是距离为M的倍数的点都可以攻击,N型导弹的特征是凡是距离为N的倍数的点都可以攻击,假定导弹的爆炸范围只能攻击一个点。兔子是小白是众所周知的事实,所以请你告诉兔子,在绝对安全的前提下,区间[1,L]还有多个点可以做窝。
输入
少于200行数据组成,每行有三个用空格分开的整数L,M,N,1<=L,M,N<2^31
输出
每行输入对应一行输出,每行输出兔子可以安全做窝的点数。
样例输入
6 2 2
6 2 3
样例输出
3
2
兔子可以住在X轴上[1,L]区间的任意一个整数点上。无奈好日子不长久,两个邪恶国家在X轴上进行军备竞赛,它们以原点为基点,分别沿X轴发射M型和N型导弹,M,N均为整数,M型导弹的特征是凡是距离为M的倍数的点都可以攻击,N型导弹的特征是凡是距离为N的倍数的点都可以攻击,假定导弹的爆炸范围只能攻击一个点。兔子是小白是众所周知的事实,所以请你告诉兔子,在绝对安全的前提下,区间[1,L]还有多个点可以做窝。
输入
少于200行数据组成,每行有三个用空格分开的整数L,M,N,1<=L,M,N<2^31
输出
每行输入对应一行输出,每行输出兔子可以安全做窝的点数。
样例输入
6 2 2
6 2 3
样例输出
3
2
很容易,一个最大公约数的问题
#include<iostream>
using namespace std;
int gcd(int x,int y)
{
int temp;
if(x<y)
{
temp=y;
y=x;
x=temp;
}
temp =1;
while(temp)
{
temp=x%y;
x=y;
y=temp;
}
return x;
}
int main()
{
int x,y,z;
while(cin>>z>>x>>y)
{
//cout<<gcd(x,y);
cout<<z-z/x-z/y+z/(x*y/gcd(x,y))<<endl;
}
return 0;
}