Usaco. Пятница тринадцать. Что не так с моим кодом?

Я сделал программу для задачи USACO, и теперь я просто не могу понять, почему я получаю плохой ответ, я долго думал, почему, и до сих пор не понял этого. Что может быть не так?

Задача состоит в том, чтобы посчитать, сколько раз 13-е выпадает в субботу, воскресенье, понедельник, вторник, …, пятницу. Год начала тестирования — 1900, а последний год указан в текстовом файле.

Вместо этого ответа: 36 33 34 33 35 35 34

Я получаю: 34 33 33 33 36 36 35

Спасибо вам большое за помощь, я очень ценю ваше время и вашу помощь 🙂

#include<iostream>
#include<fstream>

using namespace std;

int weekDayCount(int days, int weekDays[], int & currentWeekDay)
{

for(int day = 1; day <= days; day++)
{
if(day == 13)
{
weekDays[currentWeekDay]++;
}

currentWeekDay++;

if(currentWeekDay == 7) currentWeekDay = 0;
}
}

int main()
{
int currentWeekDay = 0;
int years;

ifstream in("friday.in");

in >> years;

in.close();

int weekDays[7] = {0};

for(int y = 1900; y <= (1900 + years) - 1; y++) // Years
{
cout << y << endl;

for(int m = 1; m <= 12; m++) // Months
{
if(m == 11 || m == 2 || m == 10 || m == 8) // 30 days
{
weekDayCount(30, weekDays, currentWeekDay);
}
else if(m == 5) // February
{
if(y % 100 != 0 && y % 4 == 0) // If a leap year - 29 days
{
weekDayCount(29, weekDays, currentWeekDay);
}
else if(y % 100 == 0 && y % 400 == 0) // If a century leap year
{
cout << "Leap century: " << y << endl;
weekDayCount(29, weekDays, currentWeekDay);
}
else // 28 days
{
weekDayCount(28, weekDays, currentWeekDay);
}
}
else // Else 31 days
{
weekDayCount(31, weekDays, currentWeekDay);
}
}
}

cout << "Result" << endl;

cout << weekDays[5] << " " << weekDays[6] << " " << weekDays[0] << " " << weekDays[1] << " " << weekDays[2] << " " << weekDays[3] << " " << weekDays[4] << endl;
}

-2

Решение

Ваши сравнения месяцев не верны.

Февраль 2-й месяц, а не 5-й.
Как и во втором месяце, у него нет 30 дней (по крайней мере, с тех пор, как я был жив).

Вы можете поменять эти константы.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector