题目描述
Time Limit: 1000 ms
Memory Limit: 256 mb定义一个结构体变量(包括年、月、日),编程序,要求输入年月日,计算并输出该日
在本年中第几天。
输入描述:
1输入三个整数(并且三个整数是合理的,既比如当输入月份的时候应该在1 至12 之间,
2不应该超过这个范围)否则输出Input error!
3多组测试数据输入
输出描述:
1输出一个整数.既输入的日期是本年的第几天。
输入样例:
11985 1 20
22006 3 12
输出样例:
120
271
1#include<iostream>
2#include<array>
3using namespace std;
4struct node{
5 int year,month,day;
6}p;
7array<int,13> m={0,31,28,31,30,31,30,31,31,30,31,30,31};
8int main(){
9 while(cin>>p.year>>p.month>>p.day){
10 int res=0;
11 if(p.year%400==0||(p.year%4==0&&p.year%100!=0)){
12 m[2]=29;
13 }else{m[2]=28;}
14 if(p.month<1||p.month>12||p.day<1||p.day>m[p.month]){
15 cout<<"Input error!"<<endl;
16 continue;
17 }
18 for(int i=1;i<p.month;i++){
19 res+=m[i];
20 }
21 res+=p.day;
22 cout<<res<<endl;
23 }
24 return 0;
25}
题目描述
Time Limit: 1000 ms
Memory Limit: 256 mb今天是2012年4月12日星期四,编写程序,输入今天开始到12月31日之间的任意日期,输出那一天是星期几。例如输入“5(回车)20(回车)”(5月20日),输出应为“Sunday”。
输入描述:
1输入第一行为月份。
2输入第二行为这个月的第几天。
输出描述:
1输入这一天是星期几。
输入样例:
15
220
输出样例:
1Sunday
1#include<iostream>
2#include<array>
3using namespace std;
4array<int,13> m={0,31,29,31,18,31,30,31,31,30,31,30,31};
5int main(){
6 int month,day;
7 while(cin>>month>>day){
8 int res=0;
9 for(int i=4;i<month;i++){
10 res+=m[i];
11 }
12 if(month==4){
13 res+=day-12;
14 }else{
15 res+=day;
16 }
17 int a=res%7;
18 switch(a){
19 case 0:
20 cout<<"Thursday"<<endl;
21 break;
22 case 1:
23 cout<<"Friday"<<endl;
24 break;
25 case 2:
26 cout<<"Saturday"<<endl;
27 break;
28 case 3:
29 cout<<"Sunday"<<endl;
30 break;
31 case 4:
32 cout<<"Monday"<<endl;
33 break;
34 case 5:
35 cout<<"Tuesday"<<endl;
36 break;
37 case 6:
38 cout<<"Wednesday"<<endl;
39 break;
40 }
41 }
42 return 0;
43}
题目描述
Time Limit: 1000 ms
Memory Limit: 256 mb有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天
输入描述:
1有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD
输出描述:
1每组数据输出一行,即日期差值
输入样例:
120110412
220110422
输出样例:
111
1#include<iostream>
2#include<string>
3#include<array>
4#include<algorithm>
5using namespace std;
6
7int days_of_year(int year){
8 if(year%400==0||(year%4==0&&year%100!=0)){
9 return 366;
10 }
11 else return 365;
12}
13int main(){
14 string x,y;
15 array<int,13> m={0,31,28,31,30,31,30,31,31,30,31,30,31};
16 while(cin>>x>>y){
17 int y1,y2,m1,m2,d1,d2,res=1;
18 y1=stoi(x.substr(0,4));
19 y2=stoi(y.substr(0,4));
20 m1=stoi(x.substr(4,2));
21 m2=stoi(y.substr(4,2));
22 d1=stoi(x.substr(6,2));
23 d2=stoi(y.substr(6,2));
24 if(y1!=y2){
25 for(int i=y1;i<y2;i++){
26 res+=days_of_year(i);
27 }
28 }
29
30 if(m1!=m2){
31 if(y2%400==0||(y2%4==0&&y2%100!=0)){
32 m[2]=29;
33 }else{m[2]=28;}
34 int tmpt1=0,tmpt2=0,det;
35 for(int i=1;i<m1;i++){
36 tmpt1+=m[i];
37 }
38 for(int i=1;i<m2;i++){
39 tmpt2+=m[i];
40 }
41 det=tmpt2-tmpt1;
42 res+=det;
43 }
44
45 if(d1!=d2){
46 res+=d2-d1;
47 }
48 cout<<res<<endl;
49 }
50 return 0;
51}
题目描述
Time Limit: 1000 ms
Memory Limit: 256 mb给出年分m和一年中的第n天,算出第n天是几月几号。
输入描述:
1输入包括两个整数y(1<=y<=3000),n(1<=n<=366)。
输出描述:
1可能有多组测试数据,对于每组数据,
2按 yyyy-mm-dd的格式将输入中对应的日期打印出来。
输入样例:
12000 3
22000 31
32000 40
42000 60
52000 61
62001 60
输出样例:
12000-01-03
22000-01-31
32000-02-09
42000-02-29
52000-03-01
62001-03-01
1#include<iostream>
2#include<array>
3#include<iomanip>
4using namespace std;
5int main(){
6 int y,n;
7 array<int,13> m={0,31,28,31,30,31,30,31,31,30,31,30,31};
8 while(cin>>y>>n){
9 int tmp=0,month=1;
10
11 if(y%400==0||(y%4==0&&y%100!=0)){
12 m[2]=29;
13 }else{m[2]=28;}
14
15 while(1){
16 tmp+=m[month++];
17 if(tmp>=n){
18 month--;
19 tmp-=m[month];
20 break;
21 }
22 }
23 int day=n-tmp;
24 cout<<setfill('0');
25 cout<<y<<"-";
26 cout<<setw(2)<<month<<"-";
27 cout<<setw(2)<<day<<endl;
28 }
29 return 0;
30}
题目描述
Time Limit: 1000 ms
Memory Limit: 256 mb编写一个日期类,要求按xxxx-xx-xx 的格式输出日期,实现加一天的操作。
输入描述:
1输入第一行表示测试用例的个数m,接下来m行每行有3个用空格隔开的整数,分别表示年月日。测试数据不会有闰年。
输出描述:
1输出m行。按xxxx-xx-xx的格式输出,表示输入日期的后一天的日期。
输入样例:
12
21999 10 20
32001 1 31
输出样例:
11999-10-21
22001-02-01
1#include<iostream>
2#include<array>
3#include<iomanip>
4using namespace std;
5int main(){
6 int n;
7 cin>>n;
8 array<int,13> m={0,31,28,31,30,31,30,31,31,30,31,30,31};
9 while(n--){
10 int year,month,day;
11 cin>>year>>month>>day;
12 if(++day>m[month]){
13 month+=1;
14 if(month>12){
15 year++;
16 month=1;
17 }
18 day=1;
19 }
20 cout<<year<<"-";
21 cout<<setfill('0');
22 cout<<setw(2)<<month<<"-";
23 cout<<setw(2)<<day<<endl;
24 }
25 return 0;
26}
题目描述
Time Limit: 1000 ms
Memory Limit: 256 mb设计一个程序能计算一个日期加上若干天后是什么日期。
输入描述:
1输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。
输出描述:
1输出m行,每行按yyyy-mm-dd的个数输出。
输入样例:
11
22008 2 3 100
输出样例:
12008-05-13
1#include<iostream>
2#include<array>
3#include<iomanip>
4using namespace std;
5int main(){
6 int m;
7 cin>>m;
8 array<int,13> mon={0,31,28,31,30,31,30,31,31,30,31,30,31};
9 while(m--){
10 int year,month,day,add;
11 cin>>year>>month>>day>>add;
12 if(year%400==0||(year%4==0&&year%100!=0)){
13 mon[2]=29;
14 }else{
15 mon[2]=28;
16 }
17 add+=day;
18 while(1){
19 if(year%400==0||(year%4==0&&year%100!=0)){
20 mon[2]=29;
21 }else{
22 mon[2]=28;
23 }
24 if(add<=0){
25 month--;
26 if(month<1){
27 month=12;
28 year--;
29 }
30 day=add+mon[month];
31 break;
32 }
33 add-=mon[month++];
34 if(month>12){
35 year++;
36 month=1;
37 }
38 }
39 cout<<year<<"-";
40 cout<<setfill('0');
41 cout<<setw(2)<<month<<"-";
42 cout<<setw(2)<<day<<endl;
43 }
44 return 0;
45}
题目描述
Time Limit: 1000 ms
Memory Limit: 256 mb随着“开心农场”等娱乐游戏风靡互联网,“偷菜”遂瞬间蹿红网络,席卷网民生活。
于是,“你‘偷’了吗”便成为大家见面的招呼语。很快,数百万都市白领成为“偷菜”队
伍中的主力军,每天在“偷”与防“偷”中乐此不疲,甚至定闹钟半夜起床“偷”菜。根据
“农作物”生长规律而变化制定偷菜时间表。
输入描述:
1假设当前时间为13:15,第一行输入作物种类数n,
2从第二行开始输入n 种作物成熟需要的时间,格式为
3Hour:Minute。
输出描述:
1依次输出n 种作物成熟时间,每行输出一个
输入样例:
13
20:30
31:10
412:50
输出样例:
113:45
214:25
32:5
1#include<iostream>
2#include<string>
3using namespace std;
4int main(){
5 int n;
6 cin>>n;
7
8 for(int i=0;i<n;i++){
9 string s;
10 cin>>s;
11 int h=0,m=0,sth=13,stm=15;
12 for(int i=0,flag=0;i<s.size();i++){
13 if(s[i]==':'){
14 flag=1;
15 continue;
16 }
17 if(flag==0){
18 h=h*10+s[i]-'0';
19 }
20 else if(flag==1){
21 m=m*10+s[i]-'0';
22 }
23 }
24 cout<<((stm+m)/60+h+sth)%24<<":"<<(m+stm)%60<<endl;
25 }
26 return 0;
27}