python计算最小自然数N,让从1到N的所有正整数之和大于S(运用while循环,N和S都是变量),并且打印结果。
写出代码,计算最小自然数N,让从1到N的所有正整数之和大于S(运用while循环,N和S都是变量),并且打印结果。 例如,如果S=10, 那么 N=5 (1+2+3+4+5=15>10); 如果S=100, 那么N=14(1+2+3+。。。+14=105>100)
回答:
python">def calc (S: int): sum = 0
N = 0
while S >= sum:
N += 1
sum += N
print(N)
calc(10)
calc(100)
回答:
import maths = int(input("plz input integer s: "))
val = int(math.sqrt(s*2))
print(val+ (0 if val*(val+1) > 2 * s else 1))
原理在于假设存在使得1+...+n=n*(n+1)/2=S
本题结果为res
,应有res = n + 1
而有n<sqrt(2*S)
令n1 = int(sqrt(2*S))
定有n >= n1
考虑到此时可能有n1*(n1+1)=2*S
(此时n=n1
),故作判断,在特定时刻令res = n1+1 = n+1
,否则res = n1 = n+1
以上是 python计算最小自然数N,让从1到N的所有正整数之和大于S(运用while循环,N和S都是变量),并且打印结果。 的全部内容, 来源链接: utcz.com/p/938436.html