水問題への自信の発見-質問A:日付の違い

毎日の質問(101)

質問A:日付の違い

タイトル説明

2つの日付があり、2つの日付の間の日数を求めます。2つの日付が連続している場合は、それらの間の日数を2日に設定します。

入る

複数のデータセットがあり、各データセットには、YYYYMMDDの形式で2つの日付を表す2つの行があります。

出力

データのグループごとに1行、つまり日付の差を出力します

サンプル入力

20130101
20130105

サンプル出力

5

C ++コード:

#include<cstdio>

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

bool isLeap(int year)
{
    
    
	return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
} 

int main()
{
    
    
	int time1, y1, m1, d1;
	int time2, y2, m2, d2;
	
	while(scanf("%d%d", &time1, &time2) != EOF)
	{
    
    
		if(time1 > time2)
		{
    
    
			int temp = time1;
			time1 = time2;
			time2 = temp;
		}
		
		y1 = time1 / 10000;
		m1 = time1 % 10000 / 100;
		d1 = time1 % 100;
		
		y2 = time2 / 10000;
		m2 = time2 % 10000 / 100;
		d2 = time2 % 100;
		
		int ans = 1;
		while(y1 < y2 || m1 < m2 || d1 < d2)
		{
    
    
			d1++;
			if(d1 == month[m1][isLeap(y1)] + 1)
			{
    
    
				m1++;
				d1 = 1;
			}
			if(m1 == 13)
			{
    
    
				y1++;
				m1 = 1;
			}
			ans++;
		}
		printf("%d\n", ans);
	}
	return 0;
}

サンプル操作の結果は次のとおりです。
ここに画像の説明を挿入

私の記事が気に入ったら、コレクションのように3回続けて覚えておいてください。すべてのように、すべての注目を集めてください。すべてのコレクションは、今後の私の無限のモチベーションになります。↖(▔▽▔)↗ご支援ありがとうございます。次号はもっとワクワクします!

おすすめ

転載: blog.csdn.net/qq_44631615/article/details/114991503