hdu 2005

来源:互联网 发布:野蛮人大作战 知乎 编辑:程序博客网 时间:2024/05/22 01:37

第几天?

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 46683    Accepted Submission(s): 17709


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

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

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

Sample Input
1985/1/202006/3/12
 

Sample Output
2071
 

Author
lcy
 

Source
C语言程序设计练习(一)
 

Recommend
JGShining
 
#include <iostream>#include <string>using namespace std;int strtoint(string s){int r = 0;for (int n = 0; n < s.size(); n++) {int t = 1;for (int m = n + 1; m < s.size(); m++) {t *= 10;}r += (s[n] - 48) * t;}return r;}int main(){string s;int y,m,d,i;while(cin>>s){string year,month,day;int count = 0,total_days = 0;for(i = 0; i < s.size(); i++){if (s[i] == '/') {count++;continue;}if (count == 0)year += s[i];else if (count == 1)month += s[i];else if (count == 2)day += s[i];}y = strtoint(year);m = strtoint(month);d = strtoint(day);for (i = 1; i < m; i++) {if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12) total_days += 31;else if(i == 2)total_days += 28;elsetotal_days += 30;}total_days += d;if (m > 2 && ((y % 100 == 0 && y % 400 == 0) || (y % 100 != 0 && y % 4 == 0)))//m>2 don't forgettotal_days += 1;cout<<total_days<<endl;}return 0;}

原创粉丝点击