Занумеруем монеты 1,2,3,4,5,6. Предполагается, что фальшивые монеты весят одинаково. 1) Кладем на левую чашу 1,2,3, а на правую - 4,5,6 Рассмотрим 2 возможных случая. Случай 1 2) Предположим, левая чаша перевесила. Значит, обе фальшивые монеты на правой. Кладем на левую 4, на правую 5. Если равновесие, то обе они фальшивые. Если какая-то легче, например, 5, то она фальшивая и фальшивая оставшаяся 6. Понадобилось всего 2 взвешивания. Случай 2 2) Теперь предположим, что весы в равновесии. Тогда каждая из троек содержит по одной фальшивой монете. Кладем на левую 1, на правую 2. Если равновесие, то обе они фальшивые. Если какая-то легче, например, 1, то она фальшивая и фальшивая оставшаяся 3. 3) Кладем на левую 4, на правую 5. Если равновесие, то обе они фальшивые. Если какая-то легче, например, 5, то она фальшивая и фальшивая оставшаяся 6.
Var a: string; words, nums, chars, i, sen: integer; begin readln(a); words := 1; For i := 1 to Length(a) do begin If (a[i] = ' ') then inc(words); if (a[i] in ['0'..'9']) then inc(nums); if (a[i] = #13) then inc(sen); if (a[i] in ['a'..'z', 'A'..'Z', 'а'..'я', 'А'..'Я']) then inc(chars); end; writeln(Words, ' words', #13, Chars, ' chars (', Nums, ' Numbers)', #13, Sen, ' sentences'); end.
Разве что на строки проверить не могу, т.к. у меня только PascalABC, но должно работать =)
1) Кладем на левую чашу 1,2,3, а на правую - 4,5,6
Рассмотрим 2 возможных случая.
Случай 1
2) Предположим, левая чаша перевесила. Значит, обе фальшивые монеты на правой. Кладем на левую 4, на правую 5. Если равновесие, то обе они фальшивые. Если какая-то легче, например, 5, то она фальшивая и фальшивая оставшаяся 6. Понадобилось всего 2 взвешивания.
Случай 2
2) Теперь предположим, что весы в равновесии. Тогда каждая из троек содержит по одной фальшивой монете. Кладем на левую 1, на правую 2. Если равновесие, то обе они фальшивые. Если какая-то легче, например, 1, то она фальшивая и фальшивая оставшаяся 3.
3) Кладем на левую 4, на правую 5. Если равновесие, то обе они фальшивые. Если какая-то легче, например, 5, то она фальшивая и фальшивая оставшаяся 6.
words, nums, chars, i, sen: integer;
begin
readln(a);
words := 1;
For i := 1 to Length(a) do
begin
If (a[i] = ' ') then inc(words);
if (a[i] in ['0'..'9']) then inc(nums);
if (a[i] = #13) then inc(sen);
if (a[i] in ['a'..'z', 'A'..'Z', 'а'..'я', 'А'..'Я']) then inc(chars);
end;
writeln(Words, ' words', #13, Chars, ' chars (', Nums, ' Numbers)', #13, Sen, ' sentences');
end.
Разве что на строки проверить не могу, т.к. у меня только PascalABC, но должно работать =)