解题思路:
只需要判断每个月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分
8 人评分
//#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; }
C语言程序设计教程(第三版)课后习题9.8 (Java代码)浏览:1674 |
分糖果 (C++代码)浏览:1537 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:669 |
输出正反三角形 (C语言代码)格式错误!!!浏览:1177 |
输出正反三角形 (C语言代码)浏览:859 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:568 |
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:573 |
Wu-求圆的面积 (C++代码)浏览:1994 |
IP判断 (C语言代码)浏览:820 |
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:583 |
零点三十三分 2024-02-13 00:34:01 |
你好,请问(a+16)%7==5是怎么得出来的,我没搞明白TAT