最新牛客网语法篇练习函数类型_小乐乐学会了自定义函数,bobo老师,大数据开发开发基础作用

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!


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")

  1. 牛牛有一个长度为 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=' ')

  1. 小乐乐上课需要走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))

  1. 牛牛最近学会了一些简单的数学运算,请你帮他模拟一下这个运算。 (即 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))

  1. 牛牛定义了一个函数 digit(x,i) ,表示分离出 x 的后 i 位的数字。
x, i = input().split(' ')
i = int(i)
print(x[len(x)-i:])

21.牛牛在尝试把一个整数逆序地输出。

print(input()[::-1])

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

[外链图片转存中…(img-XN1ZjL6Y-1715823718870)]
[外链图片转存中…(img-CJZMcz0c-1715823718870)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值