牛客网–day of week

牛客网–day of week

题目描述
We now use the Gregorian style of dating in Russia. The leap years are years with number divisible by 4 but not divisible by 100, or divisible by 400. For example, years 2004, 2180 and 2400 are leap. Years 2004, 2181 and 2300 are not leap. Your task is to write a program which will compute the day of week corresponding to a given date in the nearest past or in the future using today’s agreement about dating.
输入描述:
There is one single line contains the day number d, month name M and year number y(1000≤y≤3000). The month name is the corresponding English name starting from the capital letter.
输出描述:
Output a single line with the English name of the day of week corresponding to the date, starting from the capital letter. All other letters must be in lower case.

Month and Week name in Input/Output:
January, February, March, April, May, June, July, August, September, October, November, December
Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
示例1
输入

9 October 2001
14 October 2001

输出

Tuesday
Sunday

//注意二维字符数组的初始化。
//隐藏条件就是1年1月1日是星期一,把这个时间点设为锚点

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;

char  mon[13][20]={" ","January","February","March","April","May","June","July","August","September","October","November","December"};
char  week[7][20]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

bool leap(int y){
    if(y%400==0||y%4==0&&y%100!=0) return true;
    else return false;
}
int days(int y,int m,int d){
    int sum=0;
    for(int i=1;i<y;i++){
        if(leap(i)) sum+=366;
        else sum+=365;
    }
    if(leap(y)) day[2]+=1;
    for(int j=1;j<m;j++){
        sum+=day[j];
    }
    sum+=d;
    return sum;
}

int main(){
    int y,m,d;
    char month[13];
    
    while(cin>>d>>month>>y){
        for(int i=1;i<13;i++){
            if(strcmp(month,mon[i])==0){
                m=i;
                break;
            }
        }
        int cnt1=days(y,m,d);
   
        cout<<week[cnt1%7];
    }
    return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/100205.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • java %08d_总结Java中String.format()的使用[通俗易懂]

    java %08d_总结Java中String.format()的使用[通俗易懂]快速入门介绍Java中强大的String.format()前言从Java5.0开始,String类新增了一个强大的字符串格式化方法format()。这个方法到现在用的人还是不多,实在是一种浪费。本文带你快速过一遍这个方法的功能,将来你要用到格式化文本的时候,可能就不需要再借用第三方类库或自己去实现了。首先看一个简单例子:Stringformatted=String.format(“…

  • JavaScript两种数组去重方法[通俗易懂]

    JavaScript两种数组去重方法[通俗易懂]JavaScript两种数组去重方法第一种(利用splice方法去重)splice()方法用于插入、删除或替换数组的元素。//申明一个数组vararr=[1,3,5,4,3,1,5,7,8,4,7];functiontemp(arr){for(i=0;i<arr.length;i++){for(j…

  • 利用R语言画图时添加希腊符号标注

    我们在画图时往往需要添加一些图形标注,例如,x坐标轴的含义,y坐标轴的含义,图例等。标注中的普通的英文符号自不待说,将希腊符号添加在标注中往往是各种画图工具需要特别处理的地方。在LaTeX、Matlab中画出这些希腊符号标注,我已经尝试过,并且使用它们已经有一段日子了,关键是如何R中画出这些希腊符号。R是一个开源的以编程语言方式提供的(本身也称为R语言)可以与其他类似软件相媲美的统计计算软件包

  • 理解51单片机最小系统的工作原理「建议收藏」

    理解51单片机最小系统的工作原理「建议收藏」51单片机最小应用系统概述要想使用单片机,第一个要搭建的电路就是单片机的最小系统,有了这个最小系统单片机就可以去正常的工作,即使没有其他的外围电路(显示器啥的),也可以对单片机进行程序的编写,程序也可以在单片机里面正常的运行。其包括MCS-51系列芯片一块,(51初步认识)电源电路,时钟电路,复位电路。51单片机最小系统原理图1.电源电路任何的电子设备都需要给其供应相对应的工作电源才可以正常工作,此芯片可用+5V的直流电源供电电源电路2.时钟电路单片机的芯片是数字电路芯片,数字芯片要想正常

  • PostgreSQL 列转行问题

    PostgreSQL 列转行问题1测试表数据SELECT   relative_label_contentFROM   frk_s.label_cor_generelative_label_content——AABBCC 2列转行写法写法1:(string_agg)SELECT   frwybs,   string_agg(relative_label_co…

  • win7蓝屏错误代码对照表(windows蓝屏合集)

    windows蓝屏错误对照表00×00000000作业完成。10×00000001不正确的函数。20×00000002系统找不到指定的档案。30×00000003系统找不到指定的路径。40×00000004系统无法开启档案。50×00000005拒绝存取。60×00000006无效的代码。70×00000007储存体控制区块已毁。80×00000008储存体空间

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号