skachmin
?>

Дано натуральное число. требуется разделить запятыми тройки его цифр (считая справа вводится одно натуральное число, не превышающее 10^100. вывести то же число, разделяя тройки цифр запятыми.

Информатика

Ответы

partners
// PascalABC.NET 3.3, сборка 1599 от 17.12.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var s:=ReadlnString(' >');
  Write('-> ');
  var n:=s.Length;
  if n<4 then Writeln(s)
  else
    while true do begin
      var p:=n mod 3; p:=p=0?3:p;
      Write(s[:p+1],',');
      s:=s[p+1:];
      n:=s.Length;
      if n=3 then begin Writeln(s); Exit end
      end
end.

Примеры
 > 1231423454123112313211
-> 1,231,423,454,123,112,313,211

 > 123456
-> 123,456

 > 13
-> 13
anna-leonova
Var s: string;
    i: integer;
begin
  write('число: ');  readln(s);
  i:=length(s)-2;
  repeat
    insert(',',s,i);
    i:=i-3;
  until i<3;
  writeln('новое число: ',s);
end.

число: 123456789654321987
новое число: 123,456,789,654,321,987
федороа
Берем третьи байты и переводим в двоичную систему счисления:добавим в начале нулей, чтобы получилось 8 цифр.   ←    ←  найдем маску. запишем с столбик. если элементы одинаковые, ставим соответствующее число, если элементы разные, ставим крестик: 00000101 00011101 000xx101    ← маска т.к. по правилу в маске, сначала идут единицы, переместим их в начало: 11xx0000 если бы по условию, надо было бы найти наименьшее возможное значение, то мы бы заменяли крестики(х) на нули. т.к. по условию необходимо наибольшее возможное значение, подставляем вместо крестиков(x), единицу и переведем в десятичную систему счисления:
Stenenko
Пусть в "долях" a < =  b < = c вершин, и проведены все рёбра между разными "долями". так как из каждой вершины, лежащей в первой "доле", можно провести только  b + c рёбер, из второй доли — a + c рёбер, из третьей — a + b рёбер, то общее количество рёбер равно (a * (b + c) + b * (a + c) + c * (a + b))/2 = ab + ac + bc (деление на 2 возникает из-за того, что каждое ребро подсчитывается дважды). нужны такие a, b, c, при которых значение выражения ab + bc + ac будет максимально. максимальное значение можно найти перебором. python 3: max_value = 0     for a in range(40//3 + 1):     for b in range(a, (40 - a)//2 + 1):       c = 40 - a - b       value = a * b + a * c + b * c       max_value = max(max_value, value)   print(max_value) ответ. 533

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Дано натуральное число. требуется разделить запятыми тройки его цифр (считая справа вводится одно натуральное число, не превышающее 10^100. вывести то же число, разделяя тройки цифр запятыми.
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

prik-galina7390
ibzaira
Антонович937
sharkova1443
af-rc7893
triumfmodern
kseniay2006548
e-liza-k
kyzua2475
ГармаеваЕкатерина1637
mbobo28311
Tane4ka2110
Kochinev7
d43irina
andreyshulgin835