西暦の入力から閏年を判定する問題と、その提出コードの解答例です。
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ラーニングのレベルアップ問題集については、ユーザー同士で解答を教え合ったり、コードを公開したりするのは自由としています。
また授業や研修、教材などにも利用できるそうです。