• C语言 · 黑色星期五


    算法训练 黑色星期五  
    时间限制:1.0s   内存限制:512.0MB
        

    问题描述
      有些西方人比较迷信,如果某个月的13号正好是星期五,他们就会觉得不太吉利,用古人的说法,就是“诸事不宜”。请你编写一个程序,统计出在某个特定的年份中,出现了多少次既是13号又是星期五的情形,以帮助你的迷信朋友解决难题。
      说明:(1)一年有365天,闰年有366天,所谓闰年,即能被4整除且不能被100整除的年份,或是既能被100整除也能被400整除的年份;(2)已知1998年1月1日是星期四,用户输入的年份肯定大于或等于1998年。
      输入格式:输入只有一行,即某个特定的年份(大于或等于1998年)。
      输出格式:输出只有一行,即在这一年中,出现了多少次既是13号又是星期五的情形。
    输入输出样例
    样例输入
    1998
    样例输出
    3
     
     1 #include <stdio.h>     
     2 int AllWeek(int year){  
     3     //已知1998年1月1日是星期四  
     4     int i=1998,week=3;  
     5     int days=0;  
     6     for(i=1998;i<year;i++)  
     7     {  
     8         if(i%400==0||(i%4==0&&i%100!=0))  
     9             days+=366;  
    10         else  
    11             days+=365;  
    12     }      
    13     return (days+week)%7;  
    14 }  
    15 void ShowFd(int year){  
    16     int day[2][12]={{31,28,31,30,31,30,31,31,30,31,30},{31,29,31,30,31,30,31,31,30,31,30}};  
    17     int week=AllWeek(year);
    18     int flag=year%400==0 || (year%4==0&&year%100!=0) ? 1:0;  
    19     int times=0,i,days=0;  
    20       
    21     //遍历12个月   
    22     for(i=0;i<12;i++){ 
    23         //判断每个月13号是否是黑色星期五   
    24         if((days+12+week)%7==4)
    25             times++;
    26         days+=day[flag][i]; 
    27     }
    28     printf("%d",times);
    29 }   
    30   
    31 int main(){  
    32     int year;  
    33     scanf("%d",&year);  
    34     ShowFd(year);  
    35     return 0;  
    36 }
  • 相关阅读:
    redisserver 双击闪退
    PHP QueryList采集器
    【ubuntu】配置国内源
    【ffmpeg基础知识】文件的删除和重命名
    【ffmpeg基础知识】打印视频meta信息
    Ubuntu下pkgconfig环境变量配置
    音视频基础知识
    【linux小技巧】返回上一个目录,vi默认显示行号,vi多窗口
    【ffmpeg基础知识】ffmpeg操作目录实现list
    【ffmpeg基础知识】日常日志
  • 原文地址:https://www.cnblogs.com/panweiwei/p/6483801.html
Copyright © 2020-2023  润新知