{ }codelper
論理演算子P0019

うるう年の判定

年 y が与えられる。
次の規則(グレゴリオ暦)でうるう年なら "うるう年"、そうでなければ "平年" を出力せよ。
4 で割り切れればうるう年。
ただし 100 で割り切れればうるう年ではない。
ただし 400 で割り切れれば再びうるう年。
例:2024 年はうるう年、1900 年は平年、2000 年はうるう年。

入力
整数 y が一つ(1 ≤ y ≤ 10000)
出力
"うるう年" または "平年"
例 1 · stdin
2000
stdout
うるう年
例 2 · stdin
1900
stdout
平年
main.py
入力(stdin)

実行すると、これらの行が順に input()・標準入力に渡されます(実行中に入力を求めません)。

$ 準備完了

コードを入力して解くにはパソコンで開いてください。モバイルでは問題と解答を見られます。

ほかの言語では?言語別の解答を見る · 8 言語の解答

100 と 400 の規則を忘れるのがいちばん多い間違いです。
y % 4 == 0 だけだと 1900 年がうるう年になり、100 の規則だけ入れると 2000 年が平年になります。
一行で書くと (y % 4 == 0 && y % 100 != 0) || y % 400 == 0。
「かつ・または」の書き方は言語で違います:Python は and・or・not、残り 7 言語(Craykon を含む)は &&・||・!。
どの言語でも && が || より先に結びつきますが、括弧をつけておくと読む人が迷いません。
Craykon は もし (…) { } でなければ { }。

Pythonmain.py · 5 行
y = int(input())if (y % 4 == 0 and y % 100 != 0) or y % 400 == 0:    print("うるう年")else:    print("平年")
JavaScriptmain.js · 3 行
const y = Number(require("fs").readFileSync(0, "utf8").trim());const leap = (y % 4 === 0 && y % 100 !== 0) || y % 400 === 0;console.log(leap ? "うるう年" : "平年");
TypeScriptmain.ts · 4 行
import { readFileSync } from "node:fs";const y: number = Number(readFileSync(0, "utf8").trim());const leap: boolean = (y % 4 === 0 && y % 100 !== 0) || y % 400 === 0;console.log(leap ? "うるう年" : "平年");
JavaMain.java · 9 行
import java.util.Scanner; public class Main {    public static void main(String[] args) {        int y = new Scanner(System.in).nextInt();        boolean leap = (y % 4 == 0 && y % 100 != 0) || y % 400 == 0;        System.out.println(leap ? "うるう年" : "平年");    }}
C#Main.cs · 11 行
using System; class Program{    static void Main()    {        int y = int.Parse(Console.ReadLine());        bool leap = (y % 4 == 0 && y % 100 != 0) || y % 400 == 0;        Console.WriteLine(leap ? "うるう年" : "平年");    }}
C++main.cpp · 8 行
#include <iostream> int main() {    int y;    std::cin >> y;    bool leap = (y % 4 == 0 && y % 100 != 0) || y % 400 == 0;    std::cout << (leap ? "うるう年" : "平年") << "\n";}
Cmain.c · 9 行
#include <stdio.h> int main(void) {    int y;    scanf("%d", &y);    if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) puts("うるう年");    else puts("平年");    return 0;}
Craykonmain.cray · 9 行
y = コンソール.行読み().数に();もし (y % 4 == 0 && y % 100 != 0 || y % 400 == 0){    コンソール.書く("うるう年");}でなければ{    コンソール.書く("平年");}