Начнем с утверждения, что это была блондинка, потому что таких утверждений два. Если II сказал правду, то второе его утверждение ложно и блондинка была в шляпе. Тогда утверждение I о брюнетке - ложь. Это рассуждение иллюстрирует вторая сверху таблица. В то же время, будет ложным утверждение IV об отсутствии очков и получается, что была блондинка в шляпе и в очках. В этом случае ложно утверждение III о том, что это была рыжая. Удостоверяемся, что противоречий в цепочке рассуждений нет. Окончательно: это была блондинка в шляпе и очках. Каждый свидетель дал одно истинное показание и одно ложное.
Прочие проверки можно не делать, считая задачу корректной.
using System; class Program { static void Main() { var r = new Random(); int[] a = new int[3]; for (int i = 0; i < 3; i++) { int e = 1; bool t = true; while (e != 0 && t){ e = r.Next(1, 11); for (int j = 0; j < 3; j++) if (e == a[j]) { t = true; break; } else t = false; } a[i] = e; Console.Write(a[i] + " "); } Console.WriteLine(); int[] m = new int[10]; int b = 0;
for (int i = 0; i < 10; i++) { while (b % a[0] != 0 || b % a[1] != 0 || b % a[2] != 0) b++; m[i] = b; b++; Console.Write(m[i]+" "); } Console.Read(); } }
Если II сказал правду, то второе его утверждение ложно и блондинка была в шляпе. Тогда утверждение I о брюнетке - ложь. Это рассуждение иллюстрирует вторая сверху таблица.
В то же время, будет ложным утверждение IV об отсутствии очков и получается, что была блондинка в шляпе и в очках. В этом случае ложно утверждение III о том, что это была рыжая.
Удостоверяемся, что противоречий в цепочке рассуждений нет.
Окончательно: это была блондинка в шляпе и очках. Каждый свидетель дал одно истинное показание и одно ложное.
Прочие проверки можно не делать, считая задачу корректной.
using System;
class Program {
static void Main() {
var r = new Random();
int[] a = new int[3];
for (int i = 0; i < 3; i++) {
int e = 1; bool t = true;
while (e != 0 && t){
e = r.Next(1, 11);
for (int j = 0; j < 3; j++)
if (e == a[j]) { t = true; break; } else t = false;
}
a[i] = e;
Console.Write(a[i] + " ");
}
Console.WriteLine();
int[] m = new int[10]; int b = 0;
for (int i = 0; i < 10; i++) {
while (b % a[0] != 0 || b % a[1] != 0 || b % a[2] != 0) b++;
m[i] = b;
b++;
Console.Write(m[i]+" ");
}
Console.Read();
}
}