Автор | Сообщение |
|
Отправлено: 26.05.15 10:02. Заголовок: С4 №61
Здравствуйте! Решил 61 задачу следующим образом: var a:array[0..3] of integer; N,i,k,x,max,R:integer; begin max:=-1; readln (N); for i:=1 to N do begin readln (x); k:=x mod 3; if (k=0) and (a[0]>0) and (a[0]+x>max) then max:=a[0]+x; // Для случая, когда остаток обоих чисел равен 0. if x>a[k] then a[k]:=x; if (a[3-k]<>0) and (a[3-k]+x>max) then max:=a[3-k]+x; //Если остаток k=2, то складываем с числом у которого остаток равен 1, и наоборот. end; readln (R); if max=-1 then max:=1; writeln ('Вычисленное контрольное значение: ',max); if max=R then writeln ('Контроль пройден') else writeln ('Контроль не пройден'); end. Скажите, возможно ли такое решение? Cпасибо заранее.
|
|
|
Ответов - 6
[только новые]
|
|
|
| Администратор
|
Сообщение: 853
|
|
Отправлено: 29.05.15 11:17. Заголовок: Bluemix пишет: Скажи..
Bluemix пишет: цитата: | Скажите, возможно ли такое решение? |
|
По-моему, очень неплохое решение. Можно его добавить в основной файл под вашим авторством?
|
|
|
|
Отправлено: 30.05.15 20:50. Заголовок: Конечно можно! Мои Ф..
Конечно можно! Мои Ф.И.О Стручков Михаил Павлович.
|
|
|
|
| Администратор
|
Сообщение: 854
|
|
Отправлено: 31.05.15 21:48. Заголовок: Добавлено. Я решение..
Добавлено. Я решение немного "причесал", если вы не возражаете.
|
|
|
|
Отправлено: 08.06.15 18:11. Заголовок: Константин Юрьевич! ..
*PRIVAT*
|
|
|
|
| Администратор
|
Сообщение: 883
|
|
Отправлено: 08.06.15 18:22. Заголовок: Кубай А. пишет: В ра..
Кубай А. пишет: цитата: | В разборе задачи А из №61 мне не все кажется удачным. Во-первых, перебор пар элементов разве не очевиднее циклами for i := 1 to N-1 do for j := i+1 to N do ? |
|
А не все ли равно? цитата: | я вообще не увидела, где учитывается вариант, когда таких чисел нет и R присваивается 1 |
|
Это я забыл. Исправлено. Спасибо за замечание.
|
|
|
|
Отправлено: 13.06.15 19:14. Заголовок: Здравствуйте еще раз..
Здравствуйте еще раз! Попробовал решить задачу 62 без символьных строк, оцените пожалуйста правильность моего решения: var x,x1,M:longint; count:integer; begin count:=0;//количество гласных x1:=0; readln (x); while x>0 do begin M:=x mod 2;//узнаем очередную цифру двоичного кода x1:=x1*10; if M=1 then begin if x1=0 then x1:=x1+1 else begin write ('A'); count:=count+1; x1:=0; end; end else if M=0 then begin if x1=10 then begin write ('P'); x1:=0; end else begin write ('E'); count:=count+1; end; end; x:=x div 2; end; writeln; writeln (count); //по замыслу последняя единица будет учтена, но никак не повлияет на итог end.
|
|
|
|