原题链接:蓝桥杯算法训练VIP-黑色星期五
解题思路:
只需要判断每个月13号是不是星期五就可以了。那怎么看这天是不是星期5呢?
可以计算这一天距离已知的98年1月1日有多少天,那天是星期四,天数+3再模7,结果是几就是星期几。是5就是星期5
参考代码:
#include<stdio.h>
int s1(int y)//判断润年平年
{
int flag=0;
if(y%400==0||y%100!=0&&y%4==0)
flag=1;
else flag=0;
return flag;
}
int main()
{
int a[12]={13,31,29,31,30,31,30,31,31,30,31,30};
int b[12]={13,31,28,31,30,31,30,31,31,30,31,30};
int year,i,sum=0,k=0;
scanf("%d",&year);
if(year<1998) return 0;
for(i=1998;i<year;i++){
if(s1(i))
sum+=366;
else sum+=365;
}
if(s1(year))
for(i=0;i<12;i++){
sum+=a[i];
if((sum+3)%7==5)
k++;
}
else for(i=0;i<12;i++){
sum+=b[i];
if((sum+3)%7==5)
k++;
}
printf("%d",k);
return 0;
}0.0分
4 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
//#include<bits/stdc++.h> #include<iostream> using namespace std; int month[12]={31,28,31,30,31,30,31,31,30,31,30,31}; int Isyear(int y){ return (y%400==0)||(y%4==0&&y%100!=0); } int howmanyday(int y){ int days=0; for(int i=1998;i<y;i++){ days=365+Isyear(i); } return days; } int main(){ int days,a,year,count=0;cin>>year; int b=0; a=howmanyday(year); for(int i=0;i<12;i++){ a+=month[i]+(Isyear(year)&&(i>1)); if((a+16)%7==5) count++; } cout<<count<<endl; return 0; }