大水题233(普及T1.2难度,就是比T1难一丢丢)
首先开头
```cpp
#include<iostream>
usig namespace std;
const int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
//month数组表示非特殊月份的天数
int get_day(int x,int y)
{
if((x%4==0&&x%100!=0) || (x%400==0))//如果是闰年
{
if(y==2) return 29;
}
return month[y];
}
```
大致这样(代码在浏览器里面敲的)
这样get_month(年份,月份)就会返回这个月的天数。
main函数大概这样写
```
输入y,m,d;
int day表示从20201月1日到现在的天数;
for循环,i从2010到i<y,i++
for循环,j从1到j<=12,j++
day=day+get_month(i,j);
//接着处理最后一个不完整的年份
for循环,i从1到i<m;i++
day=day+get_month(y,i);
//最后加上不完整的一个月
day=day+d;
//现在day就表示2010年1月1日,包括这一天到现在过了几天
然后如果day除以5的余数是0或1或2,就是打渔
余数是4或5就是晒网,输出即可
```
大致思路如上。这是较为简单的纯模拟算法,应该是很好理解的。还是建议理解完手敲一遍,因为我是纯浏览器打出来的,有语法错误也多包涵。
OI圈子需要新鲜血液,萌新入坑问比较傻的问题可能不一定有人回答,还请一定加油,最后祝早日AKIOI
by acha666 @ 2020-10-18 02:05:14