На кондитерской фабрике есть n видов пирожных, пирожных i-го вида на фабрике ai штук. было принято решение отвезти пирожные на продажу на ярмарку, но директор фабрики решил, что кондитерские изделия на ярмарочной витрине должны быть выложены одинаковыми , при этом пирожных каждого вида должно быть одинаковое количество. необязательно отвозить на ярмарку все виды пирожных, можно выбрать некоторые виды и взять одинаковое число пирожных каждого выбранного вида.
директору отвезти на ярмарку наибольшее число пирожных — найдите, сколько видов пирожных и сколько пирожных каждого вида нужно отвезти на ярмарку.
// Внимание! Если программа не работает, обновите версию!
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)