Nenu算法复习第六章

news/2024/11/18 0:20:52/

目录

补充知识点

1160: 6001 第几天?

1161: 6002 时间格式转换

1162: 6003 星期几?

1163: 6004 18岁生日、


补充知识点

闰年的判断方法:

能被四整除但是不能一百整除或者能被400整除

例题:

题目描述

经常会有人问你怎么判断闰年,其实很简单,就是如果年份能被4整除但是不能被100整除,或者是能被400整除,那么就是闰年,否则就不是。

输入

输入一个正整数year(1 <=year <=3000)。

输出

如果是闰年,输出YES,否则输出NO。

样例输入 复制

200

样例输出 复制

NO
#include<iostream>
using namespace std;
int run(int n)
{if((n%4==0&&n%100!=0)||(n%400==0))return 1;elsereturn 0;
}
int main()
{int y;scanf("%d",&y);if(run(y)==1)cout<<"YES";elsecout<<"NO";return 0;
}

月份的判断

1 3 5 7 8 10 12月为31天 其余(除了2月)均为30天

如果是闰年是29天 平年是28天

1160: 6001 第几天?

题目描述

给定一个日期,输出这个日期是该年的第几天。

输入

输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见输入样例,另外,可以向你确保所有的输入数据是合法的。

输出

对于每组输入数据,输出一行,表示该日期是该年的第几天。

样例输入 复制

1985/1/20
2006/3/12

样例输出 复制

20
71

来源/分类

#include<iostream>
using namespace std;
int run(int n)
{if((n%400==0)||(n%4==0&&n%100!=0))return 1;elsereturn 0;
}
int main()
{int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};int y,m,d;while(scanf("%d/%d/%d",&y,&m,&d)!=EOF){int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};int res = 0;if(run(y)==1)month[2]+=1;for(int i = 0;i<m;i++)res+=month[i];res+=d;cout<<res<<endl;}return 0;
}

1161: 6002 时间格式转换

题目描述

世界各地有多种格式来表示日期和时间。对于日期的常用格式,在中国常采用格式的是“年年年年/月月/日日”或写为英语缩略表示的”yyyy/mm/dd”,此次编程大赛的启动日期“2009/11/07”就是符合这种格式的一个日期,而北美所用的日期格式则为“月月/日日/年年年年”或”mm/dd/yyyy”,如将“2009/11/07”改成这种格式,对应的则是”11/07/2009”。对于时间的格式,则常有12小时制和24小时制的表示方法,24小时制用0-23来表示一天中的24小时,而12小时制只采用1-12表示小时,再加上am/pm来表示上午或下午,比如”17:30:00”是采用24小时制来表示时间,而对应的12小时制的表示方法是”05:30:00pm”。注意12:00:00pm表示中午12点,而12:00:00am表示凌晨12点。
对于给定的采用”yyyy/mm/dd”加24小时制(用短横线”-”连接)来表示日期和时间的字符串,请编程实现将其转换成”mm/dd/yyyy”加12小时制格式的字符串。

输入

第一行为一个整数T(T <= 10),代表总共需要转换的时间日期字符串的数目。
接下来的总共T行,每行都是一个需要转换的时间日期字符串。

输出

分行输出转换之后的结果。

样例输入 复制

2
2009/11/07-12:12:12
1970/01/01-00:01:01

样例输出 复制

11/07/2009-12:12:12pm
01/01/1970-12:01:01am

 

#include<iostream>using namespace std;int main(){int t,y,m,d,h,mm,s,cnt;char ch;scanf("%d",&t);while(t--){cnt=0;cin>>y>>ch>>m>>ch>>d>>ch>>h>>ch>>mm>>ch>>s;printf("%02d/%02d/%d-",m,d,y);if(h<12 && h>0){printf("%02d:",h);cnt+=1;}else if(h>12){printf("%02d:",h-12);}else if(h==0){printf("%02d:",h+12);cnt+=1;}else if(h==12){printf("%02d:",h);}printf("%02d:%02d",mm,s);if(cnt==1)cout<<"am"<<endl;else cout<<"pm"<<endl;}
} 

1162: 6003 星期几?

题目描述

今天是2007年11月17日,星期六。现在如果我告诉你一个日期,你能告诉它是星期几吗?

输入

输入有多组测试数据,每个测试数据占一行。每行有3个整数,分别表示:年(0< year < 10000), 月(0 <= month < 13), 日(0 <= day < 32)。

输出

每个测试数据输出一行,如果输入数据不对,输出“illegal”,否则输出它是星期几。

样例输入 复制

2007 11 17

样例输出 复制

Saturday
#include<iostream>
#include<vector>
using namespace std;
int run(int n)
{if((n%4==0&&n%100!=0)||n%400==0)return 1;elsereturn 0;
}
int main()
{vector<string> a = {{"Monday"},{"Tuesday"},{"Wednesday"},{"Thursday"},{"Friday"},{"Saturday"},{"Sunday"}};int y;int m;int d;while(scanf("%d %d %d",&y,&m,&d)!=EOF){vector<string> a = {{"Monday"},{"Tuesday"},{"Wednesday"},{"Thursday"},{"Friday"},{"Saturday"},{"Sunday"}};int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//判断合不合法if(y<=0||y>10000||m>12||m<=0||d<=0||d>=32){printf("illegal\n");continue;}int res = 0;if(run(y)==1)month[2]+=1;for(int i = 1;i<y;i++){if(run(i)==1)res+=366;elseres+=365;}for(int i = 0;i<m;i++)res+=month[i];res+=d-1;cout<<a[res%7]<<endl;}return 0;
}

1163: 6004 18岁生日、

题目描述

Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所以他想请你帮忙计算一下他和他的几个朋友从出生到达18岁生日所经过的总天数,让他好来比较一下。

输入

一个整数T,表示测试数据的组数,接下来有T行日期,每行一个,格式是YYYY-MM-DD。如我的生日是1988-03-07。

输出

T行,每行一个数,表示此人从出生到18岁生日所经过的天数。如果这个人没有18岁生日,就输出-1。

样例输入 复制

1
1988-03-07

样例输出 复制

6574

 

#include<iostream>
using namespace std;
int run(int n)
{if(n%4!=0||(n%100==0&&n%400!=0))return 0;elsereturn 1;
}
int main()
{int month[13] ={0,31,28,31,30,31,30,31,31,30,31,30,31};int t;cin>>t;while(t--){int y;int m;int d;scanf("%d-%d-%d",&y,&m,&d);int count = 0;if(m>=3){for(int i=y+1;i<=y+18;i++){if(run(i))count+=366;elsecount+=365;}}else if(m<=2){for(int i=y;i<=y+17;i++){if(run(i))count+=366;elsecount+=365;}}cout<<count<<endl;}return 0;
}

 

 


http://www.ppmy.cn/news/327716.html

相关文章

【头歌-Python】8.3 政府工作报告数据提取(project)-第4关

第1关&#xff1a;读取政府工作报告文件 任务描述 附件中为2023年政府工作报告&#xff0c;本关要求将报告中所有包含数字字符的语句进行提取&#xff0c;并根据输入的关键词&#xff0c;将报告中与关键词相关联的语句筛选后输出(限于篇幅&#xff0c;本题仅列出部分关联词&a…

SpringBoot-【回顾】

第一个SpringBoot程序 自动装配原理 Springboot的自动装配实际上就是为了从Spring.factories文件中获取到对应的需要进行自动装配的类&#xff0c;并生成相应的Bean对象&#xff0c;然后将它们交给Spring容器来帮我们进行管理 启动器&#xff1a;以starter为标记 EnableAuto…

DHCP是什么?它有什么作用?其工作模式?工作原理?

目录 一、DHCP是什么&#xff1f;二、DHCP的作用&#xff1f;1. 在没有DHCP服务的网络中2. 在有DHCP服务的网络中 三、DHCP的工作模式简介四、DHCP的工作原理五、参考资料 一、DHCP是什么&#xff1f; DHCP是动态主机配置协议&#xff08;Dynamic Host Configuration Protocol…

算法模板(3):搜索(3):图论提高

图论提高 最小生成树 &#xff08;1&#xff09;朴素版prim算法&#xff08; O ( n 2 ) O(n ^ 2) O(n2)&#xff09; 适用范围&#xff1a;稠密图易错&#xff1a;注意有向图还是无向图&#xff1b;注意有没有重边和负权边。从一个集合向外一个一个扩展&#xff0c;最开始只…

基本类型转换和引用类型转换

文章目录 前言基本类型转换自动数据类型转换强制数据类型转换 引用数据类型转换向上转型向下转型 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; Java 中的类型转换可以分为基本类型转换和引用类型转换两种。 基本类型转换指的是将一种基本数据类型转换…

【Mircosft Edge】插件推荐

插件推荐 1.推荐插件1.1 油猴 tempermonkey1.2 免费音乐播放器 Listen 1 2.添加插件2.1 打开“Micrsoft Edge 外接程序”2.2 获取新的扩展2.3 搜索插件2.3.1 在Micrsoft Edge 外接程序搜索框中输入tampermonkey&#xff0c;然后点击获取按钮进行安装2.3.2 在Micrsoft Edge 外接…

MongoDB 运行报 code: 31249, MongoError: Path collision at...

MongoDB 版本由 4.2 升级至 5.0&#xff0c;某处查询语句执行后报&#xff1a; MongoError: Path collision at activity_detail.period.start_date remaining portion period.start_date at MessageStream.messageHandler (/usr/src/app/node_modules/mongodb/lib/cmap/connec…

【Flutter 布局】001-Flex 布局

【Flutter 布局】001-Flex 布局 文章目录 【Flutter 布局】001-Flex 布局一、Flex1、概述简介构造函数 2、基本使用代码示例运行结果 3、方向取值范围代码示例 4、水平方向&#xff1a;主轴对齐方式取值范围代码示例运行结果 5、垂直方向&#xff1a;主轴对齐方式代码示例运行结…