CCF201509-2-日期计算
来源:互联网 发布:动物建模软件 编辑:程序博客网 时间:2024/05/16 15:35
问题描述
给定一个年份y和一个整数d,问这一年的第d天是几月几日?
注意闰年的2月有29天。满足下面条件之一的是闰年:
1) 年份是4的整数倍,而且不是100的整数倍;
2) 年份是400的整数倍。
注意闰年的2月有29天。满足下面条件之一的是闰年:
1) 年份是4的整数倍,而且不是100的整数倍;
2) 年份是400的整数倍。
输入格式
输入的第一行包含一个整数y,表示年份,年份在1900到2015之间(包含1900和2015)。
输入的第二行包含一个整数d,d在1至365之间。
输入的第二行包含一个整数d,d在1至365之间。
输出格式
输出两行,每行一个整数,分别表示答案的月份和日期。
样例输入
2015
80
80
样例输出
3
21
21
样例输入
2000
40
40
样例输出
2
9
9
#include <iostream>bool ruinian(int a){ if ((a%4==0)&&(a%100!=0)) return true; else if(a%400==0) return true; else return false;}int main(){ using namespace std; int year,num,month,day; cin>>year>>num; if(ruinian(year)) { for(month=1;month<=12;month++) { if (month==1) for(day=1;day<=31;day++) {if(day==num) cout<<month<<endl<<day;} if (month==2) for(day=1;day<=29;day++) {if(31+day==num) cout<<month<<endl<<day;} if (month==3) for(day=1;day<=31;day++) {if(31+29+day==num) cout<<month<<endl<<day;} if (month==4) for(day=1;day<=30;day++) {if(31+29+31+day==num) cout<<month<<endl<<day;} if (month==5) for(day=1;day<=31;day++) {if(31+29+31+30+day==num) cout<<month<<endl<<day;} if (month==6) for(day=1;day<=30;day++) {if(31+29+31+30+31+day==num) cout<<month<<endl<<day;} if (month==7) for(day=1;day<=31;day++) {if(31+29+31+30+31+30+day==num) cout<<month<<endl<<day;} if (month==7) for(day=1;day<=31;day++) {if(31+29+31+30+31+30+day==num) cout<<month<<endl<<day;} if (month==8) for(day=1;day<=31;day++) {if(31+29+31+30+31+30+31+day==num) cout<<month<<endl<<day;} if (month==9) for(day=1;day<=31;day++) {if(31+29+31+30+31+30+31+31+day==num) cout<<month<<endl<<day;} if (month==10) for(day=1;day<=31;day++) {if(31+29+31+30+31+30+31+31+30+day==num) cout<<month<<endl<<day;} if (month==11) for(day=1;day<=30;day++) {if(31+29+31+30+31+30+31+31+30+31+day==num) cout<<month<<endl<<day;} if (month==12) for(day=1;day<=31;day++) {if(31+29+31+30+31+30+31+31+30+31+30+day==num) cout<<month<<endl<<day;} } } else {for(month=1;month<=12;month++) { if (month==1) for(day=1;day<=31;day++) {if(day==num) cout<<month<<endl<<day;} if (month==2) for(day=1;day<=28;day++) {if(31+day==num) cout<<month<<endl<<day;} if (month==3) for(day=1;day<=31;day++) {if(31+28+day==num) cout<<month<<endl<<day;} if (month==4) for(day=1;day<=30;day++) {if(31+28+31+day==num) cout<<month<<endl<<day;} if (month==5) for(day=1;day<=31;day++) {if(31+28+31+30+day==num) cout<<month<<endl<<day;} if (month==6) for(day=1;day<=30;day++) {if(31+28+31+30+31+day==num) cout<<month<<endl<<day;} if (month==7) for(day=1;day<=31;day++) {if(31+28+31+30+31+30+day==num) cout<<month<<endl<<day;} if (month==7) for(day=1;day<=31;day++) {if(31+28+31+30+31+30+day==num) cout<<month<<endl<<day;} if (month==8) for(day=1;day<=31;day++) {if(31+28+31+30+31+30+31+day==num) cout<<month<<endl<<day;} if (month==9) for(day=1;day<=31;day++) {if(31+28+31+30+31+30+31+31+day==num) cout<<month<<endl<<day;} if (month==10) for(day=1;day<=31;day++) {if(31+28+31+30+31+30+31+31+30+day==num) cout<<month<<endl<<day;} if (month==11) for(day=1;day<=30;day++) {if(31+28+31+30+31+30+31+31+30+31+day==num) cout<<month<<endl<<day;} if (month==12) for(day=1;day<=31;day++) {if(31+28+31+30+31+30+31+31+30+31+30+day==num) cout<<month<<endl<<day;} } } return 0;}
自己写的这段代码……要被人笑死,简直人算代替机算了,唉还是水平不行啊。下面这段网上下载的代码就比我的好很多:
#include <iostream>using namespace std;int main(){ int monthDay[]={31,28,31,30,31,30,31,31,30,31,30,31}; int year,day; int count=0; int month; cin>>year>>day; if(((year%4==0)&&(year%100!=0))||(year%400==0)) { monthDay[1]=29; } for(int i=0;i<12,count<day;i++) { count+=monthDay[i]; month=i; } count-=monthDay[month]; cout<<month+1<<endl<<day-count; return 0;}这段代码写得就很巧妙了,用数组简化了很多过程,判断条件放在循环内部,很机智,用一个循环就解决了问题,比我的循环套循环条件套条件不知道高到哪里去了。学习一个。
1 0
- CCF201509-2-日期计算
- CCF201509-2 日期计算(100分)
- ccf201509-2
- 201509-2 日期计算
- CCFCSP201509-2日期计算
- CCF201509试题
- 【转】Oracle日期计算2
- CCF-201509-2 日期计算
- CCF 201509-2 日期计算
- CCF-201509-2-日期计算
- CCF 201509-2 日期计算
- ccf 201509-2日期计算
- 201509-2 日期计算 ccf
- CCF 201509-2 日期计算
- 日期计算
- 计算日期
- 日期计算
- 日期计算
- eclipse 安装 scala
- 数据结构实验:连通分量个数——并查集
- 策略模式
- 网络攻防之——nmap工具的使用
- Intent详解
- CCF201509-2-日期计算
- Map 综述(一):彻头彻尾理解 HashMap
- codevs1001 舒适的路线 贪心枚举+并查集
- PHP 实现断点续传的原理和方法
- 盒子模型
- [第二类斯特林数 组合计数] 省选模拟赛 2 B. 两弹一星 missile
- 门面模式
- weblogic 和 tomcat 的区别利弊,摘自网友
- 如何用AltiumDesigner绘制STC89C51单片机原理图