原题链接:蓝桥杯算法训练VIP-黑色星期五
解题思路:
1.先求出输入年与1998年1月1日相差多少的天数sum;
2.然后求输入年的每一个月的13号与1998年1月1日相差的天数sum;注意执行的是:sum=sum+12,因为sum保存的是每一个月1日与1998年1月1日相差的天数;
3.比较该天数sum%7==1是否成立,如果成立,则这个月的13号就是星期五。(1998年1月1日是星期四,所以模7等于1就是星期五了)。
参考代码:
#include<iostream>
using namespace std;
int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool leap(int year)
{
if(year%4==0 && year%100!=0 || year%400==0)
return true;
else
return false;
}
int main()
{
int yy;
while(cin>>yy)
{
int sum=0,cnt=0;
for(int y=1998;y<yy;y++)
{
if(leap(y)) sum=sum+366;
else sum=sum+365;
}
if(leap(yy)) month[2]=29;
else month[2]=28;
for(int i=1;i<=12;i++)
{
sum=sum+12;
if(sum%7==1) cnt++;
sum=sum-12+month[i];
}
cout<<cnt<<endl;
}
return 0;
}0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复