本帖最后由 bin554385863 于 2019-11-15 21:24 编辑 #include <stdio.h>
#include <stdbool.h>
bool cmp(int n, int m) //判断两个三位数是否含有相同的数字
{
bool flag = true;
int a = n / 100, i = m / 100, b = (n % 100) / 10, j = (m % 100) / 10, c = n % 10, k = m % 10;
if (a != j && a != i && a != k && b != i && b != j && b != k && c != i && c != j && c != k)
{
flag = false;
}
return flag;
}
bool cmp123(int x, int y, int z) //判断是三个三位数是否符合比例
{
bool flag = false;
if ((y == 2 * x) && (z == 3 * x))
{
flag = true;
}
return flag;
}
bool islastzero(int x, int y, int z) //判断三个三位数是否含有零
{
bool flag = true;
if ((x + y + z) % 10 != 0 && (x % 100 > 9) && (y % 100 > 9) && (z % 100 > 9))
{
flag = false;
}
return flag;
}
bool issamedigit(int n) //判断三位数是否含有相同的数字
{
bool flag = true;
if ((n % 10 != n / 100) && (n % 10 != (n % 100) / 10) && (n / 100 != (n % 100) / 10))
{
flag = false;
}
return flag;
}
int main(int argc, char const *argv[])
{
for (size_t i = 123; i < 330; i++)
{
int j = 2 * i, k = 3 * i;
if (!cmp(i, j) && !cmp(i, k) && !cmp(j, k) && cmp123(i, j, k) && !islastzero(i, j, k) && !issamedigit(i) && !issamedigit(j) && !issamedigit(k))
{
printf("%d %d %d\n", i, j, k);
}
}
return 0;
}
--------------------------------------------------------------------------------------------------------------------
Microsoft Windows [版本 10.0.18363.476]
(c) 2019 Microsoft Corporation。保留所有权利。
E:\Users\admin\Documents\VScode>c:\Users\admin\.vscode\extensions\ms-vscode.cpptools-0.26.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-qk5vc2ft.zde --stdout=Microsoft-MIEngine-Out-h2nkam1g.glu --stderr=Microsoft-MIEngine-Error-nov1z25b.xmv --pid=Microsoft-MIEngine-Pid-4bed5xua.geb --dbgExe=D:\MinGW\bin\gdb.exe --interpreter=mi
192 384 576
219 438 657
273 546 819
327 654 981
E:\Users\admin\Documents\VScode> |