1.小乐乐学会了自定义函数,BoBo老师给他出了个问题,根据以下公式计算m的值。m = max3(a+b,b,c) / max3(a,b+c,c)+max3(a,b,b+c),其中 max3函数为计算三个数的最大值,如: max3(1, 2, 3) 返回结果为3。
a, b, c = map(int,input().split()) result1 = max(a+b, b, c) result2 = max(a, b+c, c) result3 = max(a, b, b+c) print('%.2f' % (result1 / (result2 + result3)))
2.求出[a,b]区间内有多少个数数位之和为5的倍数。
num=list(map(int,input().split())) count=0 for i in range(num[0],num[1]+1): i=str(i) sum=0 for j in i: sum+=int(j) if sum%5==0: count+=1 print(count)
3.给你一个数,让他进行巴啦啦能量,沙鲁沙鲁,小魔仙大变身,如果进行变身的数不满足条件的话,就继续让他变身......直到满足条件为止。
巴啦啦能量,沙鲁沙鲁,小魔仙大变身:对于一个数,把他所有位上的数字进行加和,得到新的数。如果这个数字是个位数的话,那么他就满足条件。
num = input() while True: if len(num) > 1: num = str(sum(list(map(int, list(num))))) else: print(num) break
4.请统计某个给定范围[L, R]的所有整数中,数字2出现的次数。
比如给定范围[2, 22],数字2在数2中出现了1次,在数12中出现1次,在数20中出现1次,在数21中出现1次,在数22中出现2次,所以数字2在该范围内一共出现了6次。
a,b = map(int,input().split(" ")) s = "" for i in range(a,b+1): s += str(i) print(s.count("2"))
5.牛牛很喜欢发短信,他所用的通讯公司的收费方法如下:
每条短信收费0.1元;每条短息的字数不超过60字,如果超过60字,将按照0.2元的价格收费。
牛牛这个月发了 n 条短信,请问牛牛一共要缴多少短信费。
n=eval(input()) ls=list(map(int,input().split())) ls.sort() s=-1 for i in ls: if i>60: s=ls.index(i) break if s==-1: print(0.1*n) else: print((s)*0.1+(n-s)*0.2)
6.牛牛刚刚学了素数的定义:素数值指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数,牛牛想知道在 [l,r] 范围内全部素数的和。
def isPrime(n): for i in range(2, n // 2 + 1): if n % i == 0: return False if n >= 2: return True a, b = map(int, input().split()) s = 0 for i in range(a, b + 1): if isPrime(i): s += i print(s)
7.牛牛刚学会数组不久,他拿到两个数组 a 和 b,询问 b 的哪一段连续子数组之和与数组 a 之和最接近。如果有多个子数组之和同样接近,输出起始点最靠左的数组。
n=[int(i) for i in input().split()] a=[int(i) for i in input().split()] b=[int(i) for i in input().split()] s=sum(a) min=abs(sum(b)-s) idx=[0,n[1]] for i in range(0,n[1]): for j in range(i+1,n[1]+1): if abs(sum(b[i:j])-s)<min: min=abs(sum(b[i:j])-s) idx[0]=i idx[1]=j print(' '.join(str(i) for i in b[idx[0]:idx[1]]))
8.现在给出一个素数,这个素数满足两点:
只由1-9组成,并且每个数只出现一次,如13,23,1289。
位数从高到低为递减或递增,如2459,87631。
请你判断一下,这个素数的回文数是否为素数
(13的回文数是131,127的回文数是12721)。
def judge(x): if x == 1: return False if x == 2: return True if x%2 == 0: return False for i in range(3,int(x**0.5)+1,2): if x%i == 0: return False return True n = input() num = int(n[:-1] + n[-1] + n[-2::-1]) if judge(num): print('prime') else: print('noprime')
9.若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。
例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数。
又如:对于10进制数87:
STEP1:87+78 = 165 STEP2:165+561 = 726
STEP3:726+627 = 1353 STEP4:1353+3531 = 4884
在这里的一步是指进行了一次N进制的加法,上例最少用了4步得到回文数4884。
写一个程序,给定一个N(2<=N<=10或N=16)进制数M(100位之内),求最少经过几步可以得到回文数。如果在30步以内(包含30步)不可能得到回文数,则输出“Impossible!”
进制N>10时,使用大写'A'字母表示10,'B'表示11,...,'E'表示16。
n = int(input()) m = input() def trans(m,n): if int(n) == 16: return str(format(int(m),'X')) else: s = [] while m>=n: s.append(int(m)%int(n)) m = int(m)//int(n) s.append(m) s = s[::-1] return ''.join(list(map(str,s))) step = 1 while step<=30: mr = m[::-1] d = int(mr,n)+int(m,n) m = trans(d, n) if m == m[::-1]: print(f'STEP={step}') break step += 1 else: print('Impossible!')
10.兔子发现了一个数字序列,于是开始研究这个序列。兔子觉得一个序列应该需要有一个命名,命名应该要与这个序列有关。由于兔子十分讨厌完全平方数,所以兔子开创了一个新的命名方式:这个序列中最大的不是完全平方数的数字就是他的名字。
现在兔子有一个序列,想要知道这个序列的名字是什么。
import math n = int(input()) arr_a = list(map(int, input().split(' '))) ans = 0 for i in arr_a: if (i > ans) and math.sqrt(i) != int(math.sqrt(i)): ans = i print(ans)
11.糖和抖m在玩个游戏,规定谁输了就要请谁吃顿大餐:抖m给糖a b c三个驻, 并在a柱上放置了数量为n的圆盘,圆盘的大小从上到下依次增大,现在要做的事就是把a柱的圆盘全部移到c柱,移动的过程中保持小盘在上,大盘在下,且限定圆盘只能够移动到相邻的柱子,即a柱子上的圆盘只能够移动到b,b柱子上的圆盘只能够移动到a或者c,c同理。现在请你设计一个程序,计算所需移动的最小步数, 帮助糖赢得大餐!
import sys c = 0 def x(n): global c if n == 0: return x(n - 1) c += 1 x(n - 1) c += 1 x(n - 1) n = [int(i) for i in input().split()] for i in n: x(i) print(c) c = 0
12.牛牛刚刚学了素数的定义:素数值指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数,牛牛想知道输入的 n 个数分别是不是素数。
def fun(x): flag = 1 for i in range(2,int(x**0.5)+1): if x % i == 0: flag = 0 break return flag n = int(input()) for i in range(n): num = int(input()) if fun(num) == 1: print("true") else: print("false")
13. 牛牛有一个长度为 n 的字符数组,他尝试把字符数组中其中一些字符替换成另一些字符。
n,a1,a2,b1,b2=input().split() a=list(input()) for h,k in zip([a1,b1],[a2,b2]): for i in range(int(n)): if a[i]==h: a[i]=k print(''.join(i for i in a))
14.牛牛最近学了水仙花数,但是他并不喜欢水仙花,因此他准备算出 [l,r] 区间内的四叶玫瑰数。
四叶玫瑰数:一个数的四个位置的数字的四次方加起来等于这个四位数本身的数。
l,r=map(int,input().split()) ls=[] for i in range(l,r+1): count=0 tem=(i//1000)**4+(i%1000//100)**4+(i%100//10)**4+(i%10)**4 if tem==i and tem!=10000: count+=1 ls.append(tem) for i in ls: print(i,end=' ')
15.世界上有10类人,1类是懂二进制的,另一类的不懂二进制的。牛牛是第10种人,因此他是懂二进制的。牛牛把二进制数分成两种,一种是 1 的数量是偶数的,牛牛称之为 1 数,一种是 0 的数量是偶数的,牛牛称之为 0 数,如果一个数同时是 1 数和 0 数,那称之为 10 数。
n = int(input()) a = list(map(int,input().split())) for item in a: b = str(bin(item)).replace('0b', '') c, d = b.count('1'), b.count('0') if c % 2 == 0 and d % 2 == 1: print(1, end=' ') elif c % 2 == 1 and d % 2 == 0: print(0, end=' ') elif c % 2 == 0 and d % 2 == 0: print(10, end=' ') else: print(100, end=' ')
16. 小乐乐上课需要走n阶台阶,因为他腿比较长,所以每次可以选择走一阶或者走两阶,那么他一共有多少种走法?
while True: try: n=int(input()) if n==1: print(1) if n==2: print(2) else: l=[1,2] for i in range(2,n): l.append(l[i-1]+l[i-2]) print(l[-1]) except: break
17.编写一个函数 long long factorial(int n),用于计算 n 的阶乘。(要求使用递归实现)
def f(n): if n==1: return 1 return n*f(n-1) n = int(input()) print(f(n))
18. 牛牛最近学会了一些简单的数学运算,请你帮他模拟一下这个运算。 (即 1+2+3....+n-1+n)。
num = int(input()) a = 0 for i in range(1, num + 1): a += i print(a)
19.牛牛最近了解到了著名的阿克曼(Ackmann)函数,阿克曼函数是一个增长极其迅速的函数,另外一个著名的数据结构--并查集的最优复杂度便可以达到阿克曼函数的反函数级别。请你计算阿克曼函数的几个整数定义域的结果。
def ackmann(n,m): if m==0: return n+1 elif m == 1 : return n+2 elif m == 2: return 2*n+3 elif m == 3: return 2**(n+3)-3 elif m>0 and n==0: return ackmann(m,1) elif m>0 and n>0: return ackmann(m-1,ackmann(m,n-1)) n,m=map(int,input().split()) print(ackmann(n,m))
20. 牛牛定义了一个函数 digit(x,i) ,表示分离出 x 的后 i 位的数字。
x, i = input().split(' ') i = int(i) print(x[len(x)-i:])
21.牛牛在尝试把一个整数逆序地输出。
print(input()[::-1])