来自上海某大学信息大类大一新生的《三连击》(洛谷题库)(被暴击到了。。)
(emmmm竭尽毕生所学T∧T)
(写下了几十行的无效代码)
(淦,我与编程的缘分到此为止了,唉)
#include<iostream>
#include<cmath>
#include<ctime>
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<iostream>
#include<algorithm>
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类型的数组吗。。还真是没想到
。。。简洁的让我难过