寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

paizaラーニング: 閏年の判定 (C, C++, Python)

西暦の入力から閏年を判定する問題と、その提出コードの解答例です。
paizaラーニングのレベルアップ問題集「日付セット」からの出典です。
paiza.jp
・問題
 西暦yが与えられるので、閏年ならYesを、平年ならばNoを出力してください。
 閏年か平年かは次のような条件によって判定することができます。
 西暦が4で割り切れる年は閏年
 ただし、100で割り切れる年は平年
 ただし、400で割り切れる年は閏年
 西暦が4で割り切れない年は平年

・入力される値:
 整数yが1行で入力されます。
 入力値最終行の末尾に改行が1つ入ります。
 文字列は標準入力から渡されます。

・期待する出力
 閏年ならYesをそうでないなら、Noを出力してください。

・条件
 すべてのテストケースにおいて、以下の条件をみたします。
   1≦y≦10,000

僕が作成、提出したコードは、以下のとおりです。

/*
C言語による閏年の判定
https://paiza.jp/works/mondai
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<stdio.h>
int main(void){
    int y;
    scanf("%d",&y);
    if(y%400==0){
        printf("Yes");
    }else if(y%4==0 && y%100==0){
        printf("No");
    }else if(y%4==0){
        printf("Yes");
    }else{
        printf("No");
    }
    return 0;
}
/*
C++による閏年の判定
https://paiza.jp/works/mondai
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include <iostream>
using namespace std;
int main(void){
    int y;
    cin>>y;
    if(y%400==0){
        cout<<"Yes"<<endl;
    }else if(y%4==0 && y%100==0){
        cout<<"No"<<endl;
    }else if(y%4==0){
        cout<<"Yes"<<endl;
    }else{
        cout<<"No"<<endl;
    }
    return 0;
}

Pythonのバージョンは、3.x に対応します。

#Pythonによる閏年の判定
#https://paiza.jp/works/mondai
#提出コードの解答例1
#https://neguse-atama.hatenablog.com
y = int(input())

if y % 400 == 0:
    print("Yes")
elif y % 4 == 0 and y % 100 == 0:
    print("No")
elif y % 4 == 0:
    print("Yes")
else:
    print("No")

Pythonでは、標準モジュールのcalendarに閏年を判定する関数isleapが実装されています。

#Pythonによる閏年の判定
#https://paiza.jp/works/mondai
#提出コードの解答例2
#https://neguse-atama.hatenablog.com
import calendar

y = int(input())

if calendar.isleap(y):
    print("Yes")
else:
    print("No")

paizaラーニングのレベルアップ問題集については、ユーザー同士で解答を教え合ったり、コードを公開したりするのは自由としています。
また授業や研修、教材などにも利用できるそうです。