AcWing每日一题--十三号星期五

https://www.acwing.com/problem/content/1343/

按天枚举

复制代码
 1 #include<iostream>
 2 using namespace std;
 3 int months[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
 4 int weekend[7];
 5 int get(int y,int m){
 6     if(m!=2) return months[m];
 7     else{
 8         if(y%100!=0&&y%4==0||y%400==0){
 9             return 29;
10         }
11         return 28;
12     }
13 }
14 int main(void){
15     int n;
16     cin>>n;
17     int days=0;
18     int year=1900,month=1,day=1;
19     while(year<1900+n){
20         if(day==13){
21             weekend[days%7]++;
22         }
23         days++;
24         day++;
25         if(day>get(year,month)) day=1,month++;
26         if(month>12) month=1,year++;
27     }
28     for(int i=5,j=0;j<7;i=(i+1)%7,j++){
29         cout<<weekend[i]<<" ";
30     }
31     return 0;
32 }
复制代码

 

 

按月枚举

复制代码
 1 #include<iostream>
 2 using namespace std;
 3 int months[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
 4 int weekend[7];
 5 int main(void){
 6     int n;
 7     cin>>n;
 8     int days=0;
 9     for(int year=1900;year<1900+n;year++){
10         for(int month=1;month<=12;month++){
11             weekend[(days+12)%7]++;
12             days+=months[month];
13             if(month==2){
14                 if(year%100!=0&&year%4==0||year%400==0){
15                     days++;
16                 }
17             }
18         }
19     }
20     for(int i=5,j=0;j<7;i=(i+1)%7,j++){
21         cout<<weekend[i]<<" ";
22     }
23     return 0;
24 }
复制代码

 

posted on   greenofyu  阅读(29)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示