下面是我的算法:public class JavaTest { public static void main(String[] args) { for (int a = 1; a <= 4; a++) { for (int b = 5; b <= 7; b++) { for (int c = 8; c <= 10; c++) { for (int x = 0; x <= 149; x++) { for (int y = 0; y <= 149 / 5; y++) { for (int z = 0; z <= 149 / 8; z++) { if (a * x + b * y + c * z == 149) { print(a, b, c, x, y, z); } } } } } } } } private static void print(int a, int b, int c, int x, int y, int z) { // 算出x,y,z的最大公约数 int i = divisor(divisor(x, y), z); x /= i; y /= i; z /= i; //去掉最简比例中三个数之和大于10的比例数 if (x + y + z <= 10) { int j = x + y + z; //判断最简比例能不能转化为和为10的比例数,如果能就打印出结果 if (10 % j == 0) { System.out.println("它们的价格为: " + a + ", " + b + ", " + c); System.out.println("它们的比例为: " + (10/j) * x + ": " + y + ": " + z); } } } /** * 利用辗转相除法求两个数的最大公约数 */ private static int divisor(int x, int y) { int a = 0; if (x != 0 && y != 0) { if (x > y) { while (true) { a = x % y; if (a == 0) return y; x = y; y = a; } } else { while (true) { a = y % x; if (a == 0) return x; y = x; x = a; } } } else { if (x == 0) return y; if (y == 0) return x; } return 0; } }结果很意外,就一种方案:10:0:0。也不知道对不对
public static void main(String[] args) {
for (int a = 1; a <= 4; a++) {
for (int b = 5; b <= 7; b++) {
for (int c = 8; c <= 10; c++) {
for (int x = 0; x <= 149; x++) {
for (int y = 0; y <= 149 / 5; y++) {
for (int z = 0; z <= 149 / 8; z++) {
if (a * x + b * y + c * z == 149) {
print(a, b, c, x, y, z);
}
}
}
}
}
}
}
} private static void print(int a, int b, int c, int x, int y, int z) {
// 算出x,y,z的最大公约数
int i = divisor(divisor(x, y), z);
x /= i;
y /= i;
z /= i;
//去掉最简比例中三个数之和大于10的比例数
if (x + y + z <= 10) {
int j = x + y + z;
//判断最简比例能不能转化为和为10的比例数,如果能就打印出结果
if (10 % j == 0) {
System.out.println("它们的价格为: " + a + ", " + b + ", " + c);
System.out.println("它们的比例为: " + (10/j) * x + ": " + y + ": " + z);
}
}
} /**
* 利用辗转相除法求两个数的最大公约数
*/
private static int divisor(int x, int y) {
int a = 0;
if (x != 0 && y != 0) {
if (x > y) {
while (true) {
a = x % y;
if (a == 0)
return y;
x = y;
y = a;
}
} else {
while (true) {
a = y % x;
if (a == 0)
return x;
y = x;
x = a;
}
}
} else {
if (x == 0)
return y;
if (y == 0)
return x;
}
return 0;
}
}结果很意外,就一种方案:10:0:0。也不知道对不对
产品A数量为2(可以卖1、2、3、4元)产品B数量为8(可以卖5、6、7元)产品C数量为10(可以卖8、9、10元)已知三种产品的价格总和为149元问产品A(1,2,3,4元的产品分别是多少)?产品B(5、6、7元的产品分别是多少)?产品C(8、9、10元的产品分别是多少)?