E4. Разбиение на неубывающие слагаемые, обратный порядок Ограничение времени 1 секунда Ограничение памяти 64Mb Ввод стандартный ввод или input.txt Вывод стандартный вывод или output.txt Дано натуральное число N. Рассмотрим его разбиение на различные натуральные слагаемые. Два разбиения, отличающихся только порядком слагаемых, будем считать за одно, поэтому можно считать, что слагаемые в разбиении упорядочены по неубыванию.
Формат ввода Задано единственное число N. (N ≤ 40)
Формат вывода Необходимо вывести все разбиения числа N на различные натуральные слагаемые. Слагаемые выводите по неубыванию.
Вводы и выводы бывают нескольких "видов". Есть простой, к примеру, и с переводом строки. Они различаются тем, как мы будем читать. read(тут должна быть переменная, которую вы считываете). Тут считывается что-то, и затем можно дальше продолжать работать. А readln(тут должна быть переменная, которую вы считываете) уже после считывания переходит на следующую строку. Можно так же подключить файл. Это происходит посредством команд. assign(название текстовой переменной, затем через запятую тут должно быть название файла или путь к нему в кавычках). Затем надо сделать reset(название переменной, с которй связан был ввод); Это простые примеры. Теперь вывод. Тут в принципе, то же самое. write(переменная или текст в кавычках) просто выводит после места, где мы на вводе\выводе остановились, пишет то, что нужно. А есть writeln(). он делает то же самое, затем переходит на следующую строку. Обьясним в примерах. Различие write и writeln Есть два куска программы. a:=10; b:=20; write(a); write(b); И второй. a:=10; b:=20; writeln(a); writeln(b); Они различаются лишь четырьмя буквами, но вывод первой будет 1020 А второй 10 20 Что бы, кстати, при первом цифры не слипались, можно воспользоваться текстом. Изменим строчку write(a); на строчку write(a,' '); и тогда вывод будет таким 10 20 Файловый вывод подключается так же. Однако есть различие. Там надо использовать вместо reset - rewrite и все. Ну и естественно, не путаем две переменные ввода и вывода. Вот простые примеры
Program lol (input, output); var a, n, b, i, p,s,g m:integer; c:real; begin n:=Random(10000); writeln (n); a:=n; b:=0; c:=0; p:=1; g:=1; while a <> 0 do begin a:=a div 10; b:=b+1; end; while b <> 0 do begin p:=1; for m:=1 to b do p:=p*10; s:=(n mod p) div (p div 10); c:=c+s; g:=g*s; b:=b-1; end; writeln (c); writeln (g); end.
program lol (input, output); var a, b, i, z:integer; begin b:=0; a:=3; z:=0; while a > 2 do begin read (a); z:=0; for I:=2 to a do begin if a mod I = 0 then begin z:=z+1; if (a=I) and (z=1) then b:=b+1; end; end; end; writeln (b); end.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку