{ }codelper
负数取余P0016

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 · stdin
1
10
stdout
4
样例 2 · stdin
0
-1
stdout
6
main.py
输入(stdin)

运行时这些行会依次作为 input()/标准输入传入(运行中不会等待输入)。

$ 就绪

请在电脑上打开以编写和运行代码。在手机上可以查看题目和题解。

其他语言怎么写?查看各语言题解 · 8 种语言题解

核心是 (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。

Pythonmain.py · 4 行
d = int(input())k = int(input())# Python의 %는 나누는 수(7)와 같은 부호 — 늘 0~6이 나온다print((d + k) % 7)
JavaScriptmain.js · 3 行
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);
TypeScriptmain.ts · 3 行
import { readFileSync } from "node:fs";const [d, k]: number[] = readFileSync(0, "utf8").trim().split(/\s+/).map(Number);console.log((((d + k) % 7) + 7) % 7);
JavaMain.java · 11 行
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));    }}
C#Main.cs · 12 行
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);    }}
C++main.cpp · 7 行
#include <iostream> int main() {    int d, k;    std::cin >> d >> k;    std::cout << ((d + k) % 7 + 7) % 7 << '\n';}
Cmain.c · 9 行
#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;}
Craykonmain.cray · 4 行
d = 控制台.读行().转数字();k = 控制台.读行().转数字();// 크레이콘의 %도 JS처럼 -1 % 7 == -1 — 7을 더해 한 번 더 나눈다控制台.输出(((d + k) % 7 + 7) % 7);