题目描述
星期几换算
今天是周六,又到了可以休息的日子了,7天后又会是一个周六。请你帮忙计算下,n(n为整数,可以是正也可以为负)天后会是星期几呢?
输入格式:
输入天数
输出格式:
输出星期几
输入样例1:
8
输出样例1:
星期日
输入样例2:
-2
输出样例2:
星期四
解题思路
要计算 n n n 天后是星期几,我们可以使用取模运算。
首先,将输入的天数 n n n 与 7 7 7 取模,即 n % 7 n\%7 n%7 。这样可以将天数转换成一个 [ 0 , 6 ] [0,6] [0,6] 的数字,表示相对于当前星期几的偏移量。
接下来,我们需要考虑当前是星期几。假设今天是星期 x x x ,那么在计算 n n n 天后的星期时,只需要将 x x x 与偏移量相加,并再次取模 7 7 7 即可,即 ( x + n ) % 7 (x+n)\%7 (x+n)%7。
那为什么不是 x + ( n % 7 ) x+(n\%7) x+(n%7) 呢?因为如果 x + ( n % 7 ) x+(n \% 7) x+(n%7) 的结果 ≤ 7 \leq7 ≤7 ,那么这个结果就代表 n n n 天后的星期几。如果结果大于 > 7 >7 >7 ,还需要将结果减去 7 7 7 ,直到结果小于 7 7 7 为止,显然这样麻烦了许多。
根据输入的天数 n n n 的正负不同,可以得到不同的结果。对于正数,可以得到 [ 0 , 6 ] [0,6] [0,6] 之间的数字,分别代表星期日到星期六。对于负数,可以得到 [ − 6 , 0 ] [-6,0] [−6,0] 之间的数字,同样也代表星期日到星期六(负数表示倒退的天数)。
需要注意的是,这个题目假设了今天是周六。如果输入的示例中给定的是其他星期几作为起始点,那么需要相应地调整代码中的current_day
的值。
Python代码实现
def calculate_weekday(n):
# 星期列表
days_of_week = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]
# 假设今天是星期六 (对应列表中的索引值为6)
current_day = 6
# 计算n天后的星期索引
future_day = (current_day + n) % 7
return days_of_week[future_day]
# 输入天数
n = int(input())
# 调用函数
result = calculate_weekday(n)
# 输出计算结果
print(result)