От разведчика была получена следующая шифрованная радиограмма, переданная с использованием азбуки Морзе: −•−−•−••−•−•••−−
При передаче радиограммы было потеряно разбиение на буквы, но известно, что в радиограмме использовались только следующие буквы:
С У А М Н
••• ••− •− −− −•
// Внимание! Если программа не работает, обновите версию!
begin;
var s:=ReadInteger('n=').ToString;
If s.Length<>(s.Distinct.Count) then Writeln('не является')
else
if s=s.ToCharArray.SortedDescending.JoinIntoString('')
then Writeln('является') else Writeln('не является')
end.
Примеры
n= 9875431
является
n= 9753321
не является
n= 9763421
не является
Замечание: учтено, что упорядоченность должна быть по убыванию а не по невозрастанию. т.е. нельзя, чтобы попадались две одинаковые цифры.
! инверсия значения
& побитовое И
^ исключающее ИЛИ
| побитовое ИЛИ
13(10)=00001101(2)
14(10)=00001110(2)
17(10)=00010001(2)
19(10)=00010011(2)
22(10)=00010110(2)
19 & 17 = 00010011 & 00010001 = 00010001
19 & !17 = 00010011 & 11101110 = 00000010
(19 & 17 | 19 & !17) = 00010001 | 00000010 = 00010011
!19 & 17 = 11101100 & 00010001 = 00000000
(19 & 17 | !19 & 17) = 00010001 | 00000000 = 00010001
17 & 14 = 00010001 & 00001110 = 00000000
(17 & 14 | (19 & 17 | !19 & 17)) = 00000000 | 00010001 = 00010001
22 & 14 = 00010110 & 00001110 = 00000110
(22 | 22 & 14) = 00010110 | 00000110 = 00010110
(17 & 14 | (19 & 17 | !19 & 17)) & (22 | 22 & 14) = 00010001 & 00010110 = 00010000
14^(19 & 17 | 19 & !17) = 00001110 ^ 00010011 = 00011101
14^(19 & 17 | 19 & !17) ^ 13 = 00011101 ^ 00001101 = 00010000
(17 & 14 | (19 & 17 | !19 & 17)) & (22 | 22 & 14) ^ 13 = 00010000 ^ 00001101 = 00011101
14^(19 & 17 | 19 & !17) ^ 13 | (17 & 14 | (19 & 17 | !19 & 17)) & (22 | 22 & 14) ^ 13 =
00010000 | 00011101 = 00011101
00011101(2) = 16+8+4+1 = 29(10)