设某物数量是 n,且三三数剩 x,五五数之剩y,七七数剩z 。 x,y,z 的值可从键盘输入,请求出对应的最小 n 值并输出。
时间: 2023-04-25 15:01:10 浏览: 53
这是一个求最小公倍数的问题。根据题意,n要同时满足以下三个条件:
1. n % 3 = x
2. n % 5 = y
3. n % 7 = z
我们可以使用辗转相除法求出3、5、7的最小公倍数,然后再用这个最小公倍数去检查每个n是否符合条件。具体步骤如下:
1. 从键盘输入x、y、z的值。
2. 分别求出3、5、7的最小公倍数,记为L。
3. 从L开始,每次加上L,检查是否符合条件。如果符合条件,则输出n的值并结束程序。
代码如下:
```
#include <iostream>
using namespace std;
int gcd(int a, int b) {
if (b == ) return a;
return gcd(b, a % b);
}
int lcm(int a, int b) {
return a * b / gcd(a, b);
}
int main() {
int x, y, z;
cin >> x >> y >> z;
int L = lcm(lcm(3, 5), 7);
for (int n = L; ; n += L) {
if (n % 3 == x && n % 5 == y && n % 7 == z) {
cout << n << endl;
break;
}
}
return ;
}
```
注意:如果x、y、z的值不合法,即不在到2之间,程序会陷入死循环。这里没有做输入验证,请自行添加。
阅读全文