eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
опубліковано 13.09.11, 11:12:01

Этот |A|, |B| < 10^9 означает что числа типа int или же что длина строки меньше 10^9 и надо использовать длинную арифметику?

awpris відповів:
А и В - числа, поэтому и в условии соотвествующие символы нужно читать как математические - внимательно ещё раз прочтите условие задачи.
опубліковано 15.09.11, 22:01:53

Как в С++ читать scanf'ом, пока не закончатся входные данные, если не использовать файлы для ввода/вывода? Или нельзя такие вопросы задавать? :)

awpris відповів:
Можно, но мы как правило на них просто не отвечаем... :)
опубліковано 15.09.11, 23:05:56

А ни в каком разделе сайта не обсуждаются &quot;технические&quot; вопросы?

опубліковано 15.09.11, 23:40:56

Должно работать while(scanf(&quot;%s %s&quot;, s1, s2) != EOF) ;

опубліковано 20.09.11, 07:05:04

steppenwolf, scanf возвращает колличество считаных переменных, так что корректней будет while(scanf(&quot;%s %s&quot;, s1, s2) == 2);

опубліковано 21.09.11, 15:54:18

С вашей же ссылки

On success, the function returns the number of items successfully read

Вариант while(scanf("%s %s", s1, s2) != EOF); запустит лишнюю итерацию при нечетном колличестве строк

Вариант while (scanf("%s", str) != EOF) с последующим считыванием второго числа избыточен, т. к. имеем два условных переходов

awpris відповів:
Так написано же выше, что &quot;...впрочем - есть варианты...&quot; _Сообщение несёт информативную ценность только целиком, а не вырванными кусками, в последнем случае происходит либо частичная потеря либо искажение информации_.
опубліковано 21.09.11, 17:09:37

То iama: По этому поводу не поленился специально отправил такой вариант - см. статистика отправка 410581.

Причина: В упоминаемом варианте while (scanf(&quot;%s&quot;, str) != EOF) до того переменная str объявлена как char str[MAX]; Поэтому условие scanf(&quot;%s&quot;, str) != EOF читается до первого пробела и никакой избыточности (т.е. Вашими словами два условных перехода) нет.

опубліковано 21.09.11, 20:03:06

awpris, я имел в виду, что нужно отдельно считывать первую и вторую строку, когда это можно сделать за один вызов функции, что, впрочем, в этой задаче несущественно. Просто я хотел сказать, что scanf вернет EOF только, когда поток будет пуст, а из него (scanf'а) можно извлечь *намного* больше полезной информации.

Извините за оффтоп :)

awpris відповів:
Всё нормально - более того, я подчёркнул в Вашем сообщении очень важные слова и добавил одно слово (выделил жирным) - также извините... :) Но многим будет полезно над этими словами задуматься...
опубліковано 22.09.11, 02:57:27

Не спорю, что во многих задачах удобнее проверять возвращаемое значение функции scanf() на количество считанных элементов. В данной же задаче возможен вариант ввода, приведенный мной выше. Причем никакой избыточности там не наблюдается вследствие условий задачи и гарантии корректности входных данных.

Здесь получился некий полезный оффтоп, поэтому думаю было бы уместно переместить его в тему обсуждения ввода-вывода. Или отразить эти факты в разделе Помощь.

awpris відповів:
Коль уж зашла речь &quot;о полезности оффтопа&quot;, :) то приведу ещё один интересный способ записи условия, обговариваемого выше: _while (~scanf(&quot;%s&quot;, str))_ Интересно, не правда ли?
опубліковано 22.09.11, 20:57:37

awpris, а это все компиляторы поддерживают? А то, помнится, вроде у Керинигана и Ричи, говорилось, что некоторые компиляторы С++ могут иметь значение EOF, отличное от -1, тогда эта запись не сработала бы.

UPD: нашел, ст. 31

EOF - целая константа, определенная в <stdio.h>. Какое значение имеет эта константа - неважно, лишь бы оно отличалось от любого из возможных значений типа char. Использование именованной константы с унифицированным именем гарантирует, что программа не будет зависеть от конкретного числового значения, которое, возможно, в других Си-системах будет иным.

Но запись, конечно, красивая :)

awpris відповів:
&quot;_а это все компиляторы поддерживают?_&quot; - проверьте экспериментально.
опубліковано 24.09.11, 20:45:37

Не совсем понимаю вашу иронию насчет полезности. Ведь изначально здесь приводились не столь вычурные методы ввода. Замечу также, что они не отражены в разделе Помощь. Именно поэтому оффтоп и родился, в ответ на безобидный вопрос о вводе.

awpris відповів:
Извините за вопрос: А где Вы увидели иронию? Может я чего-то не доглядел? Я ведь собственно ради полезности демонстрации разных способов ввода и включился в дискуссию. Или это было не ко мне?