数位之和
定义,表示在十进制下的各位数字和。
现在给定一个,请你求出最小正整数,满足.
输入描述:
第一行数据组数,对于每组数据,一行一个数字。
输出描述:
对于每组数据,一行一个整数表示最小的。
输入例子1:
2
7
9
输出例子1:
7
9
输入例子2:
2
13
18
输出例子2:
49
99
思路:十进制数中9最大
if __name__ == '__main__':
n = int(input())
for i in range(n):
m = int(input())
num = []
while m:
if m%9==0:
num+=[9]*(m//9)
m = 0
else:
num.append(m % 9)
m -= m % 9
num = sorted(num)
print("".join( str(x) for x in num))
2.有三种葡萄,每种分别有\mathit a,b,ca,b,c颗。有三个人,第一个人只吃第\text 1,21,2种葡萄,第二个人只吃第\text 2,32,3种葡萄,第三个人只吃第\text 1,31,3种葡萄。
适当安排三个人使得吃完所有的葡萄,并且且三个人中吃的最多的那个人吃得尽量少。
输入描述:
第一行数字\mathit TT,表示数据组数。
接下来\mathit TT行,每行三个数\mathit a,b,ca,b,c
1 \leq a,b,c \leq 10^{18} , 1 \leq T \leq 101≤a,b,c≤10
18
,1≤T≤10
输出描述:
对于每组数据,输出一行一个数字表示三个人中吃的最多的那个人吃的数量。
示例1
输入
2
1 2 3
1 2 6
输出
2
3
示例2
输入
1
12 13 11
输出
12
思路:观察规律,发现可以看成是三个人分别站在三角形的顶点(假定可以形成三角形)。设三角形两个短边是a,b,长边是c。则,若两短边之和大于等于长边的一半,可实现总数平分;反之,则结果为长边的一半。
T = int(input())
for _ in range(T):
food = list(map(int,input().split()))
max_v,sum_v = max(food),sum(food)
ans = 0
if sum_v-max_v>=max_v//2:
ans =(sum_v+2)//3
else:
ans = (max_v+1)//2
print(ans)
完美序列
输出描述:对于每组数据,一行一个数字表示最长完美的连续子序列的长度。
示例1
输入
2
5
1 3 9 2 6
5
4 2 9 16 7
输出
3
3
if __name__ == '__main__':
t = int(input())
for _ in range(t):
n = int(input())
li = list(map(int, input().split(" ")))
result = left = 0
left_sum = 0
for i in range(1, len(li)):
left_sum += li[i - 1]
while li[i] < left_sum and left < i:
left_sum -= li[left]
left += 1
result = max(result, i - left + 1)
print(result)