编程计算一个题目,死活弄不出来,
本帖最后由 Acwiner 于 2021-7-23 14:48 编辑大佬们,我有一道题死活算不出来,奈何不太会编程,不知道咋搞,
436a+512b+1035c+1199d=17700 或者 436a+512b+1035c+1200d=17700
求a=? b=? c=? d=?
大哥们求解求解求解!!!!! 需要正整数兄弟们,忘记说了,我的错,我跪下 ### 大体思路
对abcd做循环,然后验证是否符合取值,如果符合就打印出来。
因为只能是正整数,所以取值范围其实可以缩小,比如436a+512b+1035c要是正好17700,d只能取0,取1就越界了。
### 代码
```
#include <iostream>
using namespace std;
int main()
{
for (int a = 0; a <= 17700 / 436; a++)
{
for (int b = 0; b <= (17700-436*a) / 512; b++)
{
for (int c = 0; c <= (17700-436*a-512*b) / 1035; c++)
{
for (int d = 0; d <= (17700-436*a-512*b-1035*c) / 1199; d++)
{
if (436 * a + 512 * b + 1035 * c + 1199 * d == 17700)
{
cout << "436 x " << a << " + 512 x " << b << " + 1035 x " << c << " + 1199 x " << d << "= 17700" << endl;
}
else if (436 * a + 512 * b + 1035 * c + 1200 * d == 17700)
{
cout << "436 x " << a << " + 512 x " << b << " + 1035 x " << c << " + 1200 x " << d << "= 17700" << endl;
}
}
}
}
}
return 0;
}
```
### 运行结果
```
436 x 1 + 512 x 22 + 1035 x 0 + 1200 x 5= 17700
436 x 6 + 512 x 2 + 1035 x 2 + 1199 x 10= 17700
436 x 6 + 512 x 12 + 1035 x 4 + 1200 x 4= 17700
436 x 11 + 512 x 2 + 1035 x 8 + 1200 x 3= 17700
436 x 17 + 512 x 2 + 1035 x 2 + 1199 x 6= 17700
436 x 21 + 512 x 12 + 1035 x 0 + 1200 x 2= 17700
436 x 26 + 512 x 2 + 1035 x 4 + 1200 x 1= 17700
436 x 28 + 512 x 2 + 1035 x 2 + 1199 x 2= 17700
``` a、b、c、d 取最小值0都远远大于17700 ,解个蛋 答案还是有的 这题n多个解,没有说明abcd的值是非负整数等等 需要正整数,忘记说了,我的错 你确定你的题目和要求都没有错? 如果436a代表 436*a的话,结果如下:
436a + 512b + 1035c + 1199d == 17700
a:6,b:2,c:2,d:10
a:17,b:2,c:2,d:6
a:28,b:2,c:2,d:2
436a + 512b + 1035c + 1200d == 17700
a:1,b:22,c:0,d:5
a:6,b:12,c:4,d:4
a:11,b:2,c:8,d:3
a:21,b:12,c:0,d:2
a:26,b:2,c:4,d:1
页:
[1]