来自上海某大学信息大类大一新生的《三连击》(洛谷题库)(被暴击到了。。)
(emmmm竭尽毕生所学T∧T)
(写下了几十行的无效代码)
(淦,我与编程的缘分到此为止了,唉)
#include#include #include using namespace std; int numbers(int a) { srand((unsigned)time(0)); a = rand() % 9 + 1; return a; } int main() { while (1) { int i; int s1, s2, s3; int n[8]; for (i = 0; i < 9; ) { n[i] = numbers(i); int j; for (j = 0; j < i; ) { if (n[i] == n[j]) { break; } else { j++; } } if (i == j + 1) { i++; } } int z[10]; z[i] = n[0] * 100 + n[1] * 10 + n[2]; s2 = n[4] * 100 + n[5] * 10 + n[6]; s3 = n[7] * 100 + n[8] * 10 + n[9]; int m[10]; int u = 0; if (s2 == z[i] * 2 && s3 == z[i] * 3) { m[i] = z[i]; } for (u; u < i; u++) { if (z[u] == m[i]) { break; } } if (u == i - 1) { cout << z[i] << " " << s2 << " " << s3 << endl; } } return 0; }
总的来说就是学的知识不够,想要完成这样的程序还常常被自己不够严密的逻辑牵着走 ,看来要学的东西还很多。。
以下是CSDN上的正确解答:
#include#include using namespace std; bool f[15]; int main() { for (int a = 123, b, c; a <= 329; a++) { fill(f, f + 10, 0); b = 2 * a; c = 3 * a; f[a % 10] = f[a / 10 % 10] = f[a / 100] = true; f[b % 10] = f[b / 10 % 10] = f[b / 100] = true; f[c % 10] = f[c / 10 % 10] = f[c / 100] = true; int cnt = 0; for (int i = 1; i <= 9; i++) if (f[i]) cnt++; if (cnt == 9) cout << a << " " << b << " " << c << endl; } return 0; }
这是bool类型的数组吗。。还真是没想到
。。。简洁的让我难过



