k 天后是星期几
用编号表示星期: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)的前一天会变成星期一(1),而不是星期六(6)。
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);