还是能力不够
写的代码简直要把自己绕死了
暴力水题
注意4004-02-29
不注意2.29只在闰年出现的话会输出4005
正解应该是4032
因为这个wa了好几发。。
#include <iostream>
#include <stdio.h>
using namespace std;
int tt2[10010][13][35];
void js()
{
int f;
for (int i = 2017; i<=10000; i++)
{
f = 0;
int tmp, k;
if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)
f = 1;
for (int j = 1; j <= 12; j++)
{
if (j == 1 && i != 2017)
tmp = tt2[i - 1][12][31];
else if (j == 2 || j == 4 || j == 6 || j == 8 || j == 9 || j == 11)
{
tmp = tt2[i][j - 1][31];
}
else if (j == 5 || j == 7 || j == 12 || j == 10)
tmp = tt2[i][j - 1][30];
else
{
if (f)
tmp = tt2[i][j - 1][29];
else
tmp = tt2[i][j - 1][28];
}
if (i == 2017&& j == 1)
tmp = 6;
if (j == 1 || j == 3 || j == 5 || j == 7 || j == 8 || j == 10 || j == 12)
for (k = 1; k <= 31; k++)
{
if (k == 1)
tt2[i][j][k] = (tmp + 1) % 7;
else
tt2[i][j][k] = (tt2[i][j][k - 1] + 1) % 7;
}
else if (j == 4 || j == 6 || j == 9 || j == 11)
for (k = 1; k <= 30; k++)
{
if (k == 1)
tt2[i][j][k] = (tmp + 1) % 7;
else
tt2[i][j][k] = (tt2[i][j][k - 1] + 1) % 7;
}
else
{
if (f)
{
for (k = 1; k <= 29; k++)
{
if (k == 1)
tt2[i][j][k] = (tmp + 1) % 7;
else
tt2[i][j][k] = (tt2[i][j][k - 1] + 1) % 7;
}
}
else
{
for (k = 1; k <= 28; k++)
{
if (k == 1)
{
tt2[i][j][1] = (tmp + 1) % 7;
}
else
tt2[i][j][k] = (tt2[i][j][k - 1] + 1) % 7;
}
}
}
}
}
/*int k;
for (int i = 2017; i<=4000; i++)
{
f = 0;for (int j = 1; j <= 12; j++)
{
if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)
f = 1;
if (j == 1 || j == 3 || j == 5 || j == 7 || j == 8 || j == 10 || j == 12)
for (k = 1; k <= 31; k++)
{
printf("%d-%d-%d-%d\n", i , j, k, tt2[i][j][k]);
}
else if (j == 4 || j == 6 || j == 9 || j == 11)
for (k = 1; k <= 30; k++)
{
printf("%d-%d-%d-%d\n", i , j, k, tt2[i][j][k]);
}
else
{
if (f)
{
for (k = 1; k <= 29; k++)
{
printf("%d-%d-%d-%d\n", i , j, k, tt2[i][j][k]);
}
}
else
{
for (k = 1; k <= 28; k++)
{
printf("%d-%d-%d-%d\n", i , j, k, tt2[i][j][k]);
}
}
}
}
}*/
}
int main()
{
int x;
js();
scanf("%d", &x);
while (x--)
{
int year, month, day;
scanf("%d-%d-%d",&year,&month,&day);
if (month == 2 && day == 29)
{
for (int i = year + 1; i <= 10000; i++)
{
if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)
if (tt2[year][month][day] == tt2[i][month][day])
{
printf("%d\n", i);
break;
}
}
}
else
for (int i = year+1; i <= 10000; i++)
{
if (tt2[year][month][day] == tt2[i][month][day])
{
printf("%d\n", i);
break;
}
}
}
return 0;
}