游客 Signup | Login
中文 | En

1579 - 计算天数

输入年月日,计算该填是本年的第几天。例如1990 20 日是1990 年的第263 天,

2000 日是2000 年第122 天。(闰年:能被400 正除,或能被整除但不能被100

整除。每年1357810 为大月)

Input

输入第一行为样例数m,接下来m行每行3个整数分别表示年月日。

Output

输出m行分别表示题目所求。

Examples

Input

2
1990 9 20
2000 5 1

Output

263
122

Hint

闰年:能被400 正除,或能被4 整除但不能被100整除。每年1、3、5、7、8、10 为大月

Solution C

#include <stdio.h>
int main(){
	int mm;
	int y,m,d;
	int sum;
	int tmp;
	int num[12] = {0,31,28,31,30,31,30,31,31,30,31,30}; 
	scanf("%d",&mm);
	while (mm--)
	{
		scanf("%d%d%d",&y,&m,&d);
		sum = d;
		if (y%400==0||(y%4==0&&y%100!=0))
		{
			num[2] = 29;
		}
		else
		{
			num[2] = 28;
		}
		for (int i = 1;i<m;i++)
		{
			sum = sum + num[i];
		}
		printf("%d\n",sum);
	}
}

Solution C++

#include <iostream>
#include <cstdio>
using namespace std;

int month[13]= {0,31,0,31,30,31,30,31,31,30,31,30,31};

int check(int y) {
    if (y % 100 == 0)
        return y % 400 == 0;
    else
        return y % 4 == 0;
}

int main()
{
    //freopen("test.in", "r", stdin);
    //freopen("test.out", "w", stdout);
    int y, m, d, t;
    cin >> t;
    while (t--) {
        int sum = 0;
        cin >> y >> m >> d;
        month[2] = check(y) + 28;
        for(int i = 1; i < m; i++)
            sum = sum + month[i];
        sum = sum + d;
        cout << sum << endl;
    }
    return 0;
}

Hint

闰年:能被400 正除,或能被4 整除但不能被100整除。每年1、3、5、7、8、10 为大月
Time Limit 1 second
Memory Limit 32 MB
Discuss Stats
上一题 下一题