文章目录
- 题目总览
- 题目详解
- 小S按按钮
- 小R排数字
牛客小白月赛108
小S按按钮
小R排数字
题目总览
题目详解
小S按按钮
思路分析:
正常处理即可,但是对于x=0
的情况要特别处理,是奇数次的时候可以解决
import math
T = int(input())
for _ in range(T):x, y = map(int, input().split())if y == 0:print(0)continueif x == 0:print(2*y-1)continuebei = (y // (1+x))yu = y % (1+x)if yu == 0:print(2*bei)elif yu == 1:print(2*bei+1)else:print(2*bei+2)
或者换成下面的向上取整的思路更好
import math
T = int(input())
for _ in range(T):x, y = map(int, input().split())if y == 0:print(0)continuebei = math.ceil(y / (1 + x))if bei*(1+x) - x >= y:print(2*bei-1)else:print(2*bei)
小R排数字
思路分析:
对于这题,有一个性质:
为什么能够被2整除的数字,只要个位数能够被2整除就可以?因为10可以被2整除,所以我们只需考虑个位数即可
同理,被4整除的数字,当只有个位的时候,我们只需判断个位,如果位数在两位以上的话,我们只用判断最低两位即可100可以被4整除
T = int(input())
# 两位数,能够被4整除的数
ser = []
for i in range(10, 100):if i % 4 == 0:ser.append(str(i))for _ in range(T):num = list(input())# 说明只有一位数if len(num) == 1:if int(num[0]) % 4 == 0:print("YES")else:print("NO")continuen = len(num)flag = 0for i in range(n):for j in range(n):if i == j:continue# 字符合并s = num[i] + num[j]if s in ser:print("YES")flag = 1breakif flag: breakif not flag: print("NO")