模运算,观察(Python)
剩下的数
https://www.nowcoder.com/practice/f80366f2611640c1abc6e5655c51ea2c
思路:诈骗题,主要是要引入模进行观察,从而发现此题的性质。令l到r的和为s,并且s % x = a,那么就有两种情况分出来了:1. a为0,那么整个数组就可以直接删除,结果就是0;2. a不为0,由于0 < x <= r - l + 1,因此取模之后,必然有1到x - 1存在,并且它恰好等于a,所以说我们就把这个多余的数以外的其他数都给删除,多余数的位置不重要,因为题目说了是环形数组,那么最终就只会剩下这1个多余的数
代码:
import sys
input = lambda: sys.stdin.readline().strip()
import math
inf = 10 ** 18
def I():
return input()
def II():
return int(input())
def MII():
return map(int, input().split())
def GMI():
return map(lambda x: int(x) - 1, input().split())
def LI():
return input().split()
def LII():
return list(map(int, input().split()))
def LFI():
return list(map(float, input().split()))
fmax = lambda x, y: x if x > y else y
fmin = lambda x, y: x if x < y else y
isqrt = lambda x: int(math.sqrt(x))
'''
模运算,观察
'''
def solve():
l, r = MII()
s = (l + r) * (r - l + 1) // 2
q = II()
for _ in range(q):
x = II()
print(1 if s % x else 0)
# t = 1
t = II()
for _ in range(t):
solve()
#每日一题挑战#
