何日後の曜日
曜日を番号で表す:0 日曜日、1 月曜日、2 火曜日、3 水曜日、4 木曜日、5 金曜日、6 土曜日。
一行目に今日の曜日番号 d、二行目に整数 k が与えられる。
今日から k 日後の曜日番号(0〜6)を出力せよ。
k が負なら |k| 日前を、0 なら今日を表す。
- 入力
- 0 ≤ d ≤ 6、-1,000,000,000 ≤ k ≤ 1,000,000,000
- 出力
- 0 以上 6 以下の曜日番号を一行
1 10
4
0 -1
6
曜日を番号で表す:0 日曜日、1 月曜日、2 火曜日、3 水曜日、4 木曜日、5 金曜日、6 土曜日。
一行目に今日の曜日番号 d、二行目に整数 k が与えられる。
今日から k 日後の曜日番号(0〜6)を出力せよ。
k が負なら |k| 日前を、0 なら今日を表す。
1 10
4
0 -1
6
実行すると、これらの行が順に input()・標準入力に渡されます(実行中に入力を求めません)。
$ 準備完了
コードを入力して解くにはパソコンで開いてください。モバイルでは問題と解答を見られます。
核心は (d + k) % 7 ですが、余りの符号が言語ごとに違います。
Python の % は割る数(7)と同じ符号なので -1 % 7 が 6 になり、そのまま正しいです。
C・C++・Java・C#・JS・TS・Craykon の % は割られる数の符号に従い(0 の方へ切り捨てた割り算の余り)、-1 % 7 は -1 です。
そこで ((d + k) % 7 + 7) % 7 のように 7 を足してもう一度割ります。
Java にはこれをしてくれる Math.floorMod(d + k, 7) があります。
負になったからと絶対値をとってはいけません — 日曜日(0)の前日が土曜日(6)ではなく月曜日(1)になります。
Craykon では ((d + k) % 7 + 7) % 7 と書きます。
d = int(input())k = int(input())# Python의 %는 나누는 수(7)와 같은 부호 — 늘 0~6이 나온다print((d + k) % 7)const [d, k] = require("fs").readFileSync(0, "utf8").trim().split(/\s+/).map(Number);// JS의 %는 나뉘는 수의 부호를 따라서 -1 % 7 === -1 — 7을 더해 한 번 더 나눈다console.log((((d + k) % 7) + 7) % 7);import { readFileSync } from "node:fs";const [d, k]: number[] = readFileSync(0, "utf8").trim().split(/\s+/).map(Number);console.log((((d + k) % 7) + 7) % 7);import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int d = sc.nextInt(); int k = sc.nextInt(); // floorMod는 결과가 나누는 수와 같은 부호(0~6). %는 -1 % 7 == -1 System.out.println(Math.floorMod(d + k, 7)); }}using System; class Program{ static void Main() { int d = int.Parse(Console.ReadLine().Trim()); int k = int.Parse(Console.ReadLine().Trim()); // C#의 %는 나뉘는 수의 부호를 따른다 — 7을 더해 0~6으로 Console.WriteLine(((d + k) % 7 + 7) % 7); }}#include <iostream> int main() { int d, k; std::cin >> d >> k; std::cout << ((d + k) % 7 + 7) % 7 << '\n';}#include <stdio.h> int main(void) { int d, k; scanf("%d %d", &d, &k); /* C의 %는 0 쪽으로 버린 나눗셈의 나머지라 음수가 나올 수 있다 */ printf("%d\n", ((d + k) % 7 + 7) % 7); return 0;}d = コンソール.行読み().数に();k = コンソール.行読み().数に();// 크레이콘의 %도 JS처럼 -1 % 7 == -1 — 7을 더해 한 번 더 나눈다コンソール.書く(((d + k) % 7 + 7) % 7);