牛客网习题
文章平均质量分 51
牛客网编程习题练习
不错就是对
Work hard and be nice to people.
展开
-
牛客网 - 编程初学者入门训练 - 分支控制(BC50~BC77)
BC50 你是天才吗?描述据说智商140以上者称为天才,KiKi想知道他自己是不是天才,请帮他编程判断。输入一个整数表示一个人的智商,如果大于等于140,则表明他是一个天才,输出“Genius”。输入描述:多组输入,每行输入包括一个整数表示的智商。输出描述:针对每行输入,输出“Genius”。while True: try: n = int(input()) if n >= 140: print('Geniu原创 2022-04-16 15:40:48 · 905 阅读 · 0 评论 -
牛客网 - 编程初学者入门训练 - 运算(BC25~BC49)
BC25 牛牛买电影票描述牛牛正在给他的朋友们买电影票,已知一张电影票价是100元,计算 x 位朋友的总票价是多少?输入描述:输入一个正整数 x ,表示牛牛的朋友个数输出描述:输出总票价 (牛牛不需要给自己买票)n = int(input())print(n*100)BC26 计算带余除法描述给定两个整数a和b (0 < a,b < 10,000),计算a除以b的整数商和余数。输入描述:一行,包括两个整数a和b,依次为被除数和除数(不为零)原创 2022-04-15 10:36:50 · 1228 阅读 · 0 评论 -
牛客网 - 编程初学者入门训练 - 输出格式化、基本运算符(BC16~BC24)
BC16 十六进制转十进制描述BoBo写了一个十六进制整数ABCDEF,他问KiKi对应的十进制整数是多少。输入描述:无输出描述:十六进制整数ABCDEF对应的十进制整数,所占域宽为15。dic = {'A':10,'B':11,'C':12,'D':13,'E':14,'F':15,}n = 0m = 'ABCDEF'l = len(m)for i in m: n = n + dic[i]*16**(l-1) l = l - 1print("%15d原创 2022-04-14 09:43:11 · 436 阅读 · 0 评论 -
牛客网 - 编程初学者入门训练 - 简单输出、基本类型(BC1~BC15)
BC1 Hello Nowcoder描述输出"Hello Nowcoder!"。开始你的编程之旅吧。print('Hello Nowcoder!')BC2 小飞机描述KiKi学会了printf在屏幕输出信息,他想输出一架小飞机。请帮他编写程序输出这架小飞机。输出:print(' ** ')print(' ** ')print('************')print('************')print(' *原创 2022-04-13 18:37:42 · 604 阅读 · 0 评论 -
冒泡排序(Python实现)
该算法的最差时间复杂度为O(n2),最优时间复杂度为O(n),平均时间复杂度为 O(n2)。原理(以从小到大排列为例):1、从列表中第一个和第二个元素开始,比较相邻元素,如果左比右大,则左右交换位置;2、从列表的开头到结尾,依次比较每对元素,直至不能再比较为止;举例:list = [1, 3, 4, 2](1)[1, 3, 2, 4] --- list[2]和list[3]交换位置后的结果;(2)[1, 2, 3, 4] --- list'[1]和list'[2交换位置后的结原创 2022-04-06 13:47:44 · 2132 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ9 提取不重复的整数】
思路:step1:首先输入一个数,令其为n;step2:将n倒叙排列(使用切片的方法:[::-1]);step3:创建一个空串a,便于后续添加字符;step4:对倒序后的数进行逐一遍历,如果i不在a里面,就将其添加进去;step5:输出打印a代码如下:n = input()n = n[::-1]a = ''for i in n: if i not in a: a += iprint(a)题解 | #提取不重复的整数#_牛客博客...原创 2022-03-14 19:17:39 · 138 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ4 字符串分割】
思路:step1:定义一个分隔函数fenge():如果字符长度大于8,则先打印前8个字符,然后将剩下的字符递归处理,再次代入函数,以此类推,直到不满足该条件为止;如果长度小于8,则将 “现有字符” 和 “与'8'个单位长度相差的数量与字符'0'相乘” 二者相加,输出打印;step2:输入字符串n,调用fenge函数代码如下:def fenge(n): if len(n) > 8: print(n[0:8]) fenge(n[8:len(n)..原创 2022-03-16 19:05:31 · 297 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ101 输入整型数组和排序标识,对其元素按照升序或降序进行排序】
思路:step1:首先,第一行输入数组元素个数,转换为整型;第二行输入数组,用list(map())转换为整型;第三行传入参数s,也转换为整型;step2:如果 s==0 ,将num用sort()函数排序,默认正序排列;之后for循环,遍历排序后的num,输出打印,并用空格隔开;step3:如果 s==1,将num用sort()函数排序,倒序排列(reverse = True);之后for循环,遍历排序后的num,输出打印,并用空格隔开代码如下:n = int(input())n..原创 2022-03-14 19:50:33 · 1237 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ1 字符串最后一个单词的长度】
思路:step1:第一行输入字符串,空字符串隔开;step2:打印最后一个单词的长度(使用len()函数显示长度),最后一个单词的下标是“-1”代码如下:n = input().split()print(len(n[-1]))题解 | #字符串最后一个单词的长度#_牛客博客...原创 2022-03-14 20:09:26 · 154 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ58 输入n个整数,输出其中最小的k个】
思路:step1:首先输入n,k这两个参数(因为input()后是字符串类型,所以需要将n,k转换为int类型,这时我们需要使用list(map())函数);step2:其次,输入一个整数数组num(原理同上,也需要转换为int型,同样需要list(map())函数;)step3:使用sorted()函数,对num整数数组进行排序;step4:使用for循环,遍历“排序后的、且使用切片切割好的”整数数组num;step5:逐个打印,并使用空格分开代码如下:n,k = lis..原创 2022-03-14 19:35:49 · 2372 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ46 截取字符串】
思路:step1:首先输入一个字符串和一个整数k;step2:按照切片原则,切取坐标为"0 ~ k-1"的字符([:k]),并输出打印代码如下:n = input()k = int(input())print(n[:k])题解 | #截取字符串#_牛客博客...原创 2022-03-14 19:23:40 · 476 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ7 取近似值】
思路:step1:首先将输入转换为浮点数step2:用divmod()函数,将该浮点数的整数部分和小数部分分离(divmod()函数返回的结果相当于(a//b,a%b),在这里我们用两个参数(a,b)接受)step3:将整数部分的数值转换为整型(举例:因为9//4的结果是2,而9.5//4的结果是2.0,因此我们需要再转换为整型)step4:判断,如果小数部分>=0.5,输出a+1;否则,输出a代码如下:num = float(input())a,b = divmod(..原创 2022-03-14 19:10:57 · 145 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ2 计算某字符出现次数】
思路:step1:输入一行字符串,并用.lower()全部转换为小写字母;step2:输入一个字符,并用.lower()全部转换为小写字母;step3:用.count()计数,并打印s在n中出现的次数代码如下:n = input().lower()s = input().lower()print(n.count(s))题解 | #计算某字符出现次数#_牛客博客...原创 2022-03-14 20:44:47 · 150 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ5 进制转换】
思路:step1:输入一个十六进制的数;step2:将输入的数用切片切去前两个字符“0x”,保留剩下位数的字符;step3:创建一个字典,使得十六进制中的“A-F”分别对应“10-15”;step4:记录切割后的字符长度,同时设立x=0,便于记录数值;step5:遍历被切去后的字符,如果字符在字典里,则在字典中取出对应数值并求出当前位数的值,加在x中,同时字符长度减一;如果字符不在字典里,则直接求出当前位数对应的值,加在x中,同时字符长度减一step6:打印数值x代码如下:..原创 2022-03-16 19:15:00 · 1017 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ22 汽水瓶】
描述某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还)。小张手上有n个空汽水瓶,她想知道自己最多可以喝到多少瓶汽水。数据范围:输入的正整数满足注意:本题存在多组输入。输入的 0 表示输入结束,并不用输出结果。输入描述:输入文件最多包含 10 组测试数据,每个数据占一行,仅包含一个正整数 n( ),表示小张手上的空汽水瓶数。n=0 表示输入结束,你的程序不应当处理这一行。输出描述:对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。如果一瓶..原创 2022-03-17 12:35:24 · 1725 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ15 求int型正整数在内存中存储时1的个数】
描述输入一个 int 型的正整数,计算出该 int 型数据在内存中存储时 1 的个数。数据范围:保证在 32 位整型数字范围内输入描述:输入一个整数(int类型)输出描述:这个数转换成2进制后,输出1的个数思路:step1:输入一个int型正整数;step2:将该正整数转换为二进制数(用bin()函数);step3:用count()函数数出'1'的个数,并打印代码如下:n = int(input())n = bin(n)print(n.count原创 2022-03-17 10:30:53 · 790 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ56 完全数计算】
描述完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。输入n,请输出n以内(含n)完全数的个数。数据范围:输入描述:输入一个数字n输出描述:输出不超过n的完全数的个数思路:step1:输入一个数字,同时创建一个空列表,便于存放查询到的完全数;原创 2022-03-18 10:38:11 · 276 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ11 数字颠倒】
思路:step1:输入一个整数;step2:将其倒序输出(使用[::-1])代码如下:n = input()print(n[::-1])题解 | #数字颠倒#_牛客博客原创 2022-03-16 20:14:51 · 116 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ34 图片整理】
描述Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过代码解决。Lily使用的图片使用字符"A"到"Z"、"a"到"z"、"0"到"9"表示。数据范围:每组输入的字符串长度满足输入描述:一行,一个字符串,字符串中的每个字符表示一张Lily使用的图片。输出描述:Lily的所有图片按照从小到大的顺序输出思路:step1:使用sorted()函数对输入进行排序,所得的均为“'x原创 2022-03-17 13:14:36 · 151 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ14 字符串排序】
描述给定 n 个字符串,请对 n 个字符串按照字典序排列。数据范围:,字符串长度满足输入描述:输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。输出描述:数据输出n行,输出结果为按照字典序排列的字符串。思路:step1:输入正整数,同时创建一个新的空列表,用来存放后续字符串;step2:对n个元素从0开始遍历(即按顺序遍历),每遍历一个,在空列表中添加一个输入;step3:...原创 2022-03-17 10:17:02 · 135 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ37 统计每个月兔子的总数】
描述有一种兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子。例子:假设一只兔子第3个月出生,那么它第5个月开始会每个月生一只兔子。假如兔子都不死,问第n个月的兔子总数为多少?数据范围:输入满足输入描述:输入一个int型整数表示第n个月输出描述:输出对应的兔子总数思路:斐波那契数列:1 1 2 3 5 8 13 21 34 f(n)=f(n-1)+f(n-2) n>2,n从0开始;step1:创建一个函数,如果n &l原创 2022-03-17 15:14:38 · 187 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ10 字符个数统计】
思路:step1:输入字符串;step2:创建一个空串a,用于存放不重复字符;step3:遍历输入的字符串,如果不在空串a里面,就将其添加;step4:打印a的长度代码如下:n = input()a = ''for i in n: if i not in a: a += i print(len(a))题解 | #字符个数统计#_牛客博客...原创 2022-03-16 20:06:23 · 129 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ21 简单密码】
描述现在有一种密码变换算法。九键手机键盘上的数字与字母的对应: 1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0,把密码中出现的小写字母都变成九键键盘对应的数字,如:a 变成 2,x 变成 9.而密码中出现的大写字母则变成小写之后往后移一位,如:X ,先变成小写,再往后移一位,变成了 y ,例外:Z 往后移是 a 。数字和其它的符号都不做变换。数据范围: 输入的字符串长度满足输.原创 2022-03-17 10:40:16 · 2704 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ51 输出单向链表中倒数第k个结点】
描述输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针。链表结点定义如下:struct ListNode{ int m_nKey; ListNode* m_pNext;};正常返回倒数第k个结点指针,异常返回空指针.要求:(1)正序构建链表;(2)构建后要忘记链表长度。数据范围:链表长度满足 ,链表中数据满足本题有多组样例输入。输入描述:输入说明1输入链表结点个数2输入链表的值3输入k的值输出...原创 2022-03-17 15:33:11 · 1291 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ31 单词倒排】
描述对字符串中的所有单词进行倒排。说明:1、构成单词的字符只有26个大写或小写英文字母;2、非构成单词的字符均视为单词间隔符;3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;4、每个单词最长20个字母;数据范围:字符串长度满足输入描述:输入一行,表示用来倒排的句子输出描述:输出句子的倒排结果思路:step1:输入字符串;step2:遍历字符串,如果i不是字母,则用空格.原创 2022-03-17 13:05:14 · 131 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ40 统计字符】
描述输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数。数据范围:输入的字符串长度满足 1 \le n \le 1000 \1≤n≤1000输入描述:输入一行字符串,可以有空格输出描述:统计其中英文字符,空格字符,数字字符,其他字符的个数思路:step1:输入字符,同时创建“shuzi”,将0-9数字添加进去,同时设置4个计数器;step2:对n进行遍历,如果i是字母,count1 += 1;如果i是空格,count2 += 1;如果i在“shuzi”中原创 2022-03-17 15:21:02 · 403 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ53 杨辉三角的变形】
以上三角形的数阵,第一行只有一个数1,以下每行的每个数,是恰好是它上面的数、左上角数和右上角的数,3个数之和(如果不存在某个数,认为该数就是0)。求第n行第一个偶数出现的位置。如果没有偶数,则输出-1。例如输入3,则输出2,输入4则输出3,输入2则输出-1。数据范围:输入描述:输入一个int整数输出描述:输出返回的int值思路:数学规律题,除去1、2行是-1;其他偶数出现的位置按2、3、2、4排列;step1:输入int整数;step2:如果n为1或者2,打印..原创 2022-03-18 10:07:22 · 197 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ12 字符串反转】
思路:step1:输入字符串;step2:将字符串倒序输出(使用[::-1])代码如下:n = input()print(n[::-1])题解 | #字符串反转#_牛客博客原创 2022-03-16 20:18:05 · 139 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ23 删除字符串中出现次数最少的字符】
描述实现删除字符串中出现次数最少的字符,若出现次数最少的字符有多个,则把出现次数最少的字符都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。数据范围:输入的字符串长度满足,保证输入的字符串中仅出现小写字母输入描述:字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。输出描述:删除字符串中出现次数最少的字符后的字符串。思路:step1:输入一组字符串s,同时创建一个新的字典dic;step2:遍历字符串s,如果元素在字典里.原创 2022-03-18 10:21:57 · 344 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ8 合并表记录】
思路:step1:首先输入值的个数,然后建立一个新字典;step2:因为多值输入,所以写出while True/Try/except/break语句结构;step3:成对儿输入表中的值,并与字典对应,index为第一个、value为第二个;step4:如果index在字典里,就让字典里的这个index对应的值加上value;如果不在,则引入这个index,并赋值value;step5:格式化输出,同时将字典里面的元素排序代码如下:n = int(input())dic =..原创 2022-03-16 19:52:09 · 199 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ13 句子逆序】
注意本题有多组输入输入描述:输入一个英文语句,每个单词用空格隔开。保证输入只包含空格和字母。输出描述:得到逆序的句子思路:step1:输入英文句子,用空串隔开;step2:将输入句子按单词倒序排列;step3:遍历倒序排列的句子逐一打印,并用空格隔开代码如下:n = input().split()n = n[::-1]for i in n: print(i,end=' ')题解 | #句子逆序#_牛客博客...原创 2022-03-16 20:30:34 · 141 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ54 表达式求值】
描述给定一个字符串描述的算术表达式,计算出结果值。输入字符串长度不超过 100 ,合法的字符包括 ”+, -, *, /, (, )” , ”0-9” 。数据范围:运算过程中和最终结果均满足 ,即只进行整型运算,确保输入的表达式合法输入描述:输入算术表达式输出描述:计算出结果值思路:step1:使用eval()函数直接求值代码如下:print(eval(input()))题解 | #表达式求值#_牛客博客...原创 2022-03-18 10:27:53 · 384 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ35 蛇形矩阵】
描述蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。例如,当输入5时,应该输出的三角形为:1 3 6 10 152 5 9 144 8 137 1211输入描述:输入正整数N(N不大于100)输出描述:输出一个N行的蛇形矩阵。思路:数学规律,看了别的uu的思路写的step1:输入一个正整数;step2:两个for循环,对i、j进行遍历,如果到最右端的时候,换行;如果不到最右边的数,以空格隔开代码如下:n = int(i原创 2022-03-17 14:43:15 · 273 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ6 质数因子】
思路:对于合数来说:质因数>=2且<=自身的平方根,因此遍历时,只需要遍历到自身平方根即可,之后用该合数除以遍历到的数,得到的数值继续重复操作。其中,每遍历一个数,就打印,并且用空格隔开;对于质数来说,因子就是1和它本身。因为质数从2开始,所以对于这类数,只要>=2打印即可;step1:输入一个正整数;step2:从2到自身平方根开始遍历,当自身可以整除遍历到的数时,打印遍历到的数,并用空格隔开,同时将整除完的数字重复遍历,直至循环结束;step3:对于质数,只要&..原创 2022-03-16 19:25:41 · 382 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ85 最长回文子串】
描述给定一个仅包含小写字母的字符串,求它的最长回文子串的长度。所谓回文串,指左右对称的字符串。所谓子串,指一个字符串删掉其部分前缀和后缀(也可以不删)的字符串数据范围:字符串长度进阶:时间复杂度:O(n)\O(n) ,空间复杂度:O(n)\O(n)输入描述:输入一个仅包含小写字母的字符串输出描述:返回最长回文子串的长度思路:step1:输入字符串,同时创建一个空列表,便于保存回文子串;step2:制作切片,起始端从头开始遍历;结尾从起始端下一位开始遍历,直原创 2022-03-20 10:49:01 · 373 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ72 百钱买百鸡问题】
描述公元五世纪,我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?现要求你打印出所有花一百元买一百只鸡的方式。输入描述:输入任何一个整数,即可运行程序。输出描述:输出有数行,每行三个整数,分别代表鸡翁,母鸡,鸡雏的数量思路:数学题:x+y+z = 100、5x+3y+z/3 = 100,求解即可;step1:输入数字;step2:引入参数k,同时分别写出x、y、z对应表达式;原创 2022-03-18 12:39:39 · 396 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ100 等差数列】
描述等差数列 2,5,8,11,14。。。。(从 2 开始的 3 为公差的等差数列)输出求等差数列前n项和数据范围:输入描述:输入一个正整数n。输出描述:输出一个相加后的整数。思路:res = (首项 + 末项)* 项数 / 2代码如下:while True: try: n = int(input()) res = (2 + (3 * n - 1)) * n / 2 print(int(res)原创 2022-03-19 10:11:33 · 800 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ97 记负均正】
描述首先输入要输入的整数个数n,然后输入n个整数。输出为n个整数中负数的个数,和所有正整数的平均值,结果保留一位小数。0即不是正整数,也不是负数,不计入计算。如果没有正数,则平均值为0。数据范围: ,输入的整数都满足 输入描述:首先输入一个正整数n,然后输入n个整数。输出描述:输出负数的个数,和所有正整数的平均值。思路:step1:输入一个正整数n,输入n个整数;step2:设置fu、zheng、count三个参数,便于后续计算;step3:对n个整数原创 2022-03-19 10:20:09 · 279 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ81 字符串字符匹配】
描述判断短字符串S中的所有字符是否在长字符串T中全部出现。请注意本题有多组样例输入。数据范围:进阶:时间复杂度:O(n)\O(n) ,空间复杂度:O(n)\O(n)输入描述:输入两个字符串。第一个为短字符串,第二个为长字符串。两个字符串均由小写字母组成。输出描述:如果短字符串的所有字符均在长字符串中出现过,则输出字符串"true"。否则输出字符串"false"。思路:step1:输入两个字符串;step2:遍历第一个字符串,如果字符不在第二个字符串里面,打印f原创 2022-03-19 09:56:51 · 324 阅读 · 0 评论 -
【牛客网 - 华为机试 - HJ108 求最小公倍数】
描述正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。数据范围:输入描述:输入两个正整数A和B。输出描述:输出A和B的最小公倍数。思路:step1:输入两个int型整数;step2:从a至a乘b开始遍历,每次间隔a,如果可以整除b,则打印输出,并且break代码如下:a,b = list(map(int,input().split()))for i in range(a , a*b+1 , a原创 2022-03-19 10:02:14 · 170 阅读 · 0 评论