Я решала 320A - Волшебные числа и нашла такую странную штуку.
Это проходило норм:
char c = getchar();
while (c != EOF)
{
...
}
но мое решение давало мне WA1, при том, что первый тест замечательно проходил у меня на компьютере.
int main()
{
char c = getchar();
while (c != EOF)
{
if (c != '1')
{
cout << "NO";
return 0;
}
while (c == '1')
c = getchar();
if (c == '4')
{
c = getchar();
if (c == '1') {
continue;
} else if (c == '4'){
c = getchar();
continue;
} else if (c == EOF) {
break;
} else {
cout << "NO";
return 0;
}
} else if (c == EOF) {
break;
} else {
cout << "NO";
return 0;
}
}
cout << "YES";
return 0;
}
Может быть надо было добавить знак переноса каретки после вывода? Не -- 33100199.
Я пронумеровала выводы, чтобы понять какой именно из них не работает: 33100283. Баг был во втором. EOF смотрелся подозрительно, мне почему-то показалось, что он может вылиться в undefined behaviour, так что я понадеялась, что тесты на кф заканчиваются на символ переноса каретки и зашло -- 33100350.
Но так или иначе, моя идея по поводу EOF -- это чистой воды предположение, гугление не дало каких-либо вразумительных результатов, может кто-нибудь может мне объяснить, что происходит?