题目1:编写题解 3016: 第几项
对于正整数n,m,求s=1+2+3……+n,当加到第几项时,s的值会超过m?
输入格式
输入m
输出格式
输出n
样例输入
1000
样例输出
45
python代码
m=int(input())
s=0#加和
for n in range(1,m+2):#避免m=1特殊情况,或取一个很大的数
s+=n
if s>m:
print(n)
break
知识点
无
题目2:题目 1011: [编程入门]最大公约数与最小公倍数
输入两个正整数m和n,求其最大公约数和最小公倍数。
输入格式
两个整数
输出格式
最大公约数,最小公倍数
样例输入
5 7
样例输出
1 35
python代码
import math
m,n=map(int,input().split())
gys=math.gcd(m,n)#最大公约数
lcm=m*n/gys#注意结果为float
print(gys,int(lcm))
最大公约数(不利用math库):
b=[]
m,n=map(int,input().split())
for i in range(1,min(m,n)+1):
if m%i==0 and n%i==0:
b.append(i)
gys=max(b)
知识点
math.gcd(m,n)
:返回m和n的
最大公约数- 最小公倍数:m*n/最大公约数(结果为float)
题目3:题目 2812: 球弹跳高度的计算
一球从某一高度落下(整数,单位米),每次落地后反跳回原来高度的一半,再落下。
编程计算气球在第10次落地时,共经过多少米? 第10次反弹多高?
输入格式
输入一个整数h,表示球的初始高度。
输出格式
输出包含两行:
第1行:到球第10次落地时,一共经过的米数。
第2行:第10次弹跳的高度。
样例输入
20
样例输出
59.9219
0.0195312
python代码
h=int(input())
ft=h#反弹高度
distance=-h#小球共经过多少米,初始值为-h
for i in range(1,11):
distance+=(ft*2)
ft=ft/2
print('%g\n%g'%(distance,ft))
知识点
- 数形结合,得到初始值
distance=-h
- 先是距离的累加,之后才是反弹效果的产生
题目4:题目 1147: C语言训练-角谷猜想
角谷猜想:
日本一位中学生发现一个奇妙的“定理”,请角谷教授证明,而教授无能为力,于是产生角谷猜想。猜想的内容是:任给一个自然数,若为偶数除以2,若为奇数则乘3加1,得到一个新的自然数后按照上面的法则继续演算,若干次后得到的结果必然为1。请编程验证。
输入格式
任一正整数
输出格式
演算的过程
样例输入
10
样例输出
10/2=5
5*3+1=16
16/2=8
8/2=4
4/2=2
2/2=1
python代码
n=int(input())
while n>1:#反正最后n==1,所以可以跳出循环
if n%2==0:
print(f'{int(n)}/2={int(n/2)}')
n/=2
else:
print(f'{int(n)}*3+1={int(n*3+1)}')
n=(n*3+1)
知识点
- f-string表达式的运用,
{}
内部进行计算 n/2
为float
类型数据
题目5:题目 2817: 级数求和
已知:Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。
现给出一个整数K(1<=k<=15),要求计算出一个最小的n;使得Sn>K。
输入格式
一个整数K。
输出格式
一个整数n。
样例输入
1
样例输出
2
python代码
n=int(input())
sn=0
i=1
while sn<=n:
sn+=(1/i)
i+=1
print(i-1)
知识点
- 当
sn>n
成立时,i+=1
已经执行过了,而我们想找的是之前的那个i
,即最小的满足条件的i
题目6:题目 2819: 数字反转
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零
输入格式
输入共 1 行,一个整数N。
-1,000,000,000 ≤ N≤ 1,000,000,000。
输出格式
输出共 1 行,一个整数,表示反转后的新数。
样例输入
123
样例输出
321
python代码
代码1:
n=input()
fn=str(abs(int(n)))#取整+绝对值+字符串,避免‘-’的影响
r=0#反转新数
for j in range(len(fn)-1,-1,-1):
r+=int(fn[j])*pow(10,j)
if int(n)<0:
print(-r)
else:
print(r)
代码2:
n=input()
r=n[::-1]#逆序
if int(n)<0:
r=int(r.strip('-'))#int作用:将r转换成整型,同时去除可能存在的最高位0
print(r)
else:
print(int(r))
知识点
abs()
:只能针对浮点型和整型 进行操作,不能对 字符串型 操作r.strip()
:并不会对r
进行修改
题目7:题目 2820: 含k个3的数
输入两个正整数 m 和 k,其中1 < m < 100000,1 < k < 5 ,判断 m 能否被19整除,且恰好含有k个3,如果满足条件,则输出YES,否则,输出NO。
例如,输入:
43833 3
满足条件,输出YES。
如果输入:
39331 3
尽管有3个3,但不能被19整除,也不满足条件,应输出NO。
输入格式
m 和 k 的值,中间用单个空格间隔。
输出格式
满足条件时输出 YES,不满足时输出 NO。
样例输入
43833 3
样例输出
YES
python代码
m,k=map(str,input().split())
if (int(m)%19==0) and (m.count('3')==int(k)):
print('YES')
else:
print('NO')
知识点
1.list
与str
都有count
功能,但是str.count(sub,start,end)
:sub
必须是字符串类型,可以在某一范围[start,end-1]
内搜索,list.count(i)
:只能返回i
出现的次数,不能在某一范围搜索