ACM编码模式示例:输入两个整数并输出两者之和
输入两个整数,数字之间用空格分隔
输出两者之和
输入:
1 3
输出:
4
Java模板
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
int a = in.nextInt();
int b = in.nextInt();
System.out.println(a + b);
}
}
}
Python模板
import sys
for line in sys.stdin:
a = line.split()
print(int(a[0]) + int(a[1]))
C模板
#include <stdio.h>
int main() {
int a, b;
while (scanf("%d %d", &a, &b) != EOF) { // 注意 while 处理多个 case
// 64 位输出请用 printf("%lld") to
printf("%d\n", a + b);
}
return 0;
}
C++模板
#include <iostream>
using namespace std;
int main() {
int a, b;
while (cin >> a >> b) { // 注意 while 处理多个 case
cout << a + b << endl;
}
}
// 64 位输出请用 printf("%lld")
此部分重点练习:常量与变量、数据类型、运算符、选择语句、常用内置函数/内置模块/工具类/三方库
题目描述
输入一个摄氏温度的值,将它转变为华氏温度,并将结果输出
转换的公式为如下: $$ fahrenheit=(9/5)*celsius+32 $$ 输入输出描述
输入一个值表示摄氏温度celsius
输出华氏温度fahrenheit ,结果保留一位小数点
示例
输入:
43
输出:
109.4
题目描述
输入圆柱的半径和高,并利用如下公式计算圆柱体的底面积和体积。 $$ area=radiusradiusπ $$
$$ volume=area*length $$
输入输出描述
分别输入圆柱的半径radius和高度length,两个数据之间用空格分隔
输出两行,第一行为圆柱底面积area,第二行为圆柱体积volume,结果保留两位小数点
示例
输入:
5.5 12
输出:
95.03
1140.41
题目描述
输入英尺数然后将它转换为米数,并输出结果,一英尺等于0.305米
输入输出描述
输入一个数据表示英尺数
输出转换后的米数,结果保留四位小数点
示例
输入:
16.5
输出:
5.0325
题目描述
读取小计和酬金率,然后计算小费以及合计金额。例如客户的小计为10元,酬金率为15%,那么小费是1.5元,合计金额为11.5元
输入输出描述
分别输入小计和酬金率,两个数据用之间用空格分隔
输出两行,第一行为小费,第二行为合计金额,结果保留两位小数
示例
输入:
15.69 15
输出:
2.35
18.04
题目描述
读取一个0到1000之间的整数,并计算它各位数字之和
输入输出描述
输入一个[0,1000]之间的整数
输出该数字的各位数字之和
示例1
输入:
999
输出:
27
解释:
999各位数之和为9 + 9 + 9 = 27
示例2
输入:
12
输出:
3
题目描述
输入分钟数,然后将该分钟数转换为年数和天数,假定一年有365天
输入输出描述
输入一个分钟数
输出两行,第一行为年数,第二行为天数
示例
输入:
1000000000
输出:
1902
214
题目描述
水从初始温度加热到最终温度是需要能量的,请计算需要多少能量,公式如下: $$ Q = M * (finalTemperature - initialTemperature) * 4184 $$ 这里的M是按千克计的水量,初始温度和最终温度均为摄氏度,热量Q以焦耳计
输入输出描述
输入三行数据,第一行输入水量,第二行输入初始温度,第三行输入最终温度
输出所需的能量值,结果保留一位小数
示例
输入:
55.5
3.5
10.5
输出:
1625484.0
题目描述
输入一个四位整数,并以反向顺序显示
输入输出描述
输入一个四位整数
输出四行,第一行为个位,第二行为十位,第三行为百位,第四行为千位
示例
输入:
5213
输出:
3
1
2
5
题目描述
输入三角形的三个顶点坐标,并计算其面积,计算公式如下 $$ s=(side1+side2+side3)/2 \ area = \sqrt{s(s-side1)(s-side2)(s-side3)} $$ 输入输出描述
输入六个数据,分别表示三角形三个顶点的坐标x1、y1、x2、y2、x3和y3,数据之间用空格分隔
输出三角形的面积,结果保留一位小数
示例
输入:
1.5 -3.4 4.6 5 9.5 -3.4
输出:
33.6
题目描述
输入你所在的时区,并输出当前的时间
输入输出描述
输入时区,如东八区为8,西五区为-5
输出二十四小时制的时间,格式为 时:分:秒
示例
输入:
8
输出:
21:43:12
题目描述
输入三角形的三个顶点坐标,并计算该三角形的三个角分别是多少(角度制) $$ A=acos((aa-bb-cc)/(-2bc)) \ B=acos((bb-aa-cc)/(-2ac)) \ C=acos((cc-bb-aa)/(-2a*b)) \ $$ 其中a、b、c分别表示三条边,A、B、C分别表示三边对应的角
输入输出描述
输入六个数据,分别表示三角形三个顶点的坐标x1、y1、x2、y2、x3和y3,数据之间用空格分隔
输出三行,分别为A、B、C三个角的度数,结果保留两位小数
示例
输入:
1 1 6.5 1 6.5 2.5
输出:
15.26
90.00
74.74
题目描述
假设硬币种类分为:一元硬币、两角五分硬币、一角硬币、五分硬币、一分硬币
输入总金额,并将总金额兑换成若干个硬币,并保证所兑换的硬币个数最少
输入输出描述
输入总金额
输出每种硬币的个数
示例
输入:
11.56
输出:
11个一元硬币
2个两角五分硬币
0个一角硬币
1个五分硬币
1个一分硬币
题目描述
正多边形是边长相等的多边形,而且所有的角相等,计算正多边形的公式为: $$ area = \frac{ns^2}{4tan(\frac{π}{n})} $$ 输入输出描述
输入两个数据分别表示边的个数n和边的长度s,数据之间用空格分隔
输出边长为s的正n多边形的面积,结果保留两位小数
示例
输入:
5 6.5
输出:
72.69
题目描述
BMI是根据体重测量健康的方式,通过以千克为单位的体重除以以米为单位的身高的平方计算而出
BMI指数解读如下:
| BMI | 解释 |
|---|---|
| BMI < 18.5 | 超轻 |
| 18.5 ≤ BMI < 25.0 | 标准 |
| 25.0 ≤ BMI < 30.0 | 超重 |
| 30.0 ≤ BMI | 肥胖 |
输入输出描述
输入体重和身高,数据之间用空格分隔
输出BMI指数结果
示例
输入:
60 1.8
输出:
标准
题目描述
一个年份如果能被4整除但不能被100整除,或者能被400整除,那么这个年份就是闰年
输入输出描述
输入一个年份
输出Yes表示该年份为闰年,No则表示不是闰年
示例1
输入:
2008
输出:
Yes
示例2
输入:
2002
输出:
No
题目描述
随机产生一个两位数数字,然后用户输入一个两位数数字,并根据以下规则判定用户赢得的奖金是多少
(1)输入的数字和随机产生的数字完全相同(包括顺序),奖金为10000元
(2)输入的数字和随机产生的数字相同(不包括顺序),奖金为3000元
(3)输入的数字和随机产生的数字有一位数相同,奖金为1000美元
(4)输入的数字和随机产生的数字都不相同,没有奖金,0元
输入输出描述
输入一个两位数
输出两行,第一行输出那个随机产生的两位数,第二行输出用户的奖金
示例1
输入:
12
输出:
12
10000
示例2
输入:
12
输出:
21
3000
示例3
输入:
12
输出:
23
1000
示例4
输入:
12
输出:
45
0
题目描述
一元二次方程$ax^2+bx+c=0 (a != 0)$ 的解可以使用下面的公式计算 $$ r_1=\frac{-b+\sqrt{b^2-4ac}}{2a},r_2=\frac{-b-\sqrt{b^2-4ac}}{2a} $$ 其中$b^2-4ac$称为判别式,如果它为正,则方程有两个实数解;为零,方程只有一个实数解;为负,没有实数解
输入输出描述
输入a、b、c三个数据,数据之间用空格分隔
两个解每行输出一个;一个解单行输出;无解则单行输出无实数解,保留两位小数
示例1
输入:
1.0 3 1
输出:
-0.38
-2.62
示例2
输入:
1 2.0 1
输出:
-1.00
示例3
输入:
1 2 3
输出:
无实数解
题目描述
如有一个2×2的线程方程组: $$ ax+by=e \ cx+dy=f $$ 你可以使用克莱姆法则解该线性方程: $$ x=\frac{ed-bf}{ad-bc},y=\frac{af-ec}{ad-bc} $$ 其中 $ad-bc$ 为判别式,如果为零则输出无解
输入输出描述
输入a、b、c、d、e、f六个数据,数据之间用空格分隔
输出两行,第一行x的解,第二行y的解,保留一位小数
示例1
输入:
9.0 4.0 3.0 -5.0 -6.0 -21.0
输出:
-2.0
3.0
示例2
输入:
1.0 2.0 2.0 4.0 4.0 5.0
输出:
无解
题目描述
输入表示今天是一周内哪一天的数字(星期天是0,星期一是1,...,星期六是6)
并输入今天之后到未来某天的天数,然后输出该天是星期几
输入输出描述
输入两个数据,分别表示今日星期几的数字和未来某天的天数,数据之间用空格分隔
输出未来某天是星期几
示例1
输入:
1 3
输出:
星期四
示例2
输入:
0 31
输出:
星期三
题目描述
给定某年、某月、某日的一个日期,计算该日是今年中的第几天
输入输出描述
输入三个数据分别表示年、月、日,数据之间用空格分隔
输出该日是今年中的第几天
示例1
输入:
2023 1 28
输出:
28
示例2
输入:
2023 3 2
输出:
61
题目描述
计算机随机产生一个数字0、1和2分别表示剪刀、石头和布
用户输入数字0、1或2,输出用户赢、计算机赢或平局
输入输出描述
输入数字0、1或2
输出有三行,第一行输出计算机出的啥,第二行输出用户出的啥,第三行输出结果
示例1
输入:
0
输出:
计算机出的 石头
用户出的 剪刀
计算机赢
示例2
输入:
1
输出:
计算机出的 剪刀
用户出的 石头
用户赢
示例3
输入:
2
输出:
计算机出的 布
用户出的 布
平局
题目描述
输入三角形三边的长度,如果输入合法则计算周长并输出结果;否则输出非法
如果任意两边之和大于第三边则输入都是合法的
输入输出描述
输入三个数据表示三边,数据之间用空格分隔
输出三角形的周长,如果非法则输出非法
示例1
输入:
1 1 1
输出:
3
示例2
输入:
1 3 1
输出:
非法
题目描述
泽勒的一致性是一个由泽勒开发的算法,用于计算一周的星期几,公式如下: $$ h=(q+\lfloor\frac{26(m+1)}{10}\rfloor+k+\lfloor\frac{k}{4}\rfloor+\lfloor\frac{j}{4}\rfloor+5j) % 7 $$ (1)$h$是指一周的星期几(0表示星期六、1表示星期天、...、6表示星期五)
(2)$q$是一个月的哪一天
(3)$m$是月份(3表示三月、4表示四月、...、12表示十二月),其中一月和二月都是按照前一年的13月和14月来计数的,所以还得把年份改为前一年
(4)$j$是世纪数,即$\lfloor\frac{year}{100}\rfloor$
(5)$k$是一个世纪的某一年,即$year % 100$
(6)$\lfloor\rfloor$为向下取整符号
输入输出描述
输入年、月、日三个数据,数据之间用空格分隔
输出该日是周几
示例1
输入:
2013 1 25
输出:
星期五
示例2
输入:
2012 5 12
输出:
星期六
题目描述
直线A上的两个点是$(x1,y1)$和$(x2,y2)$,直线B上的两个点是$(x3,y3)$和$(x4,y4)$
如果两条直线有交点,可以通过解下面的线性等式找出: $$ (y_1-y_2)x-(x_1-x_2)y=(y_1-y_2)x_1-(x_1-x_2)y_1 \ (y_3-y_4)x-(x_3-x_4)y=(y_3-y_4)x_3-(x_3-x_4)y_3 $$ 如果没有解,则表示两条直线平行
输入输出描述
输入八个数据,分别为x1 y1 x2 y2 x3 y3 x4 y4,数据之间用空格分隔
如有交点则输出交点的坐标x y,否则输出两条直线平行
示例1
输入:
2 2 5 -1 4 2 -1 -2
输出:
2.89 1.11
示例2
输入:
2 2 7 6 4 2 -1 -2
输出:
两条直线平行
题目描述
输入一个三位整数,然后判断其是否为一个回文数
如果一个数从左向右和从右向左读取时是一样的,那么这个数就是回文数
输入输出描述
输入一个数字
输出Yes表示是回文数,否则输出No
示例1
输入:
121
输出:
Yes
示例2
输入:
123
输出:
No
题目描述
判断两个矩形之间的关系:包含,重叠,相离
输入输出描述
输入两行,每行四个数据,分别是矩形的中心坐标x、y和矩形的宽、高
输出两者的关系
示例1
输入:
2.5 4 2.5 43
1.5 5 0.5 3
输出:
包含
示例2
输入:
1 2 3 5.5
3 4 4.5 5
输出:
重叠
示例3
输入:
1 2 3 3
40 45 3 2
输出:
相离
此部分重点练习:for循环语句、while循环语句、函数、字符串
题目描述
利用循环,寻找规律,打印如下数字模式:
模式A 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6 模式B 1 2 3 4 5 6 1 2 3 4 5 1 2 3 4 1 2 3 1 2 1 模式C 1 2 1 3 2 1 4 3 2 1 5 4 3 2 1 6 5 4 3 2 1 模式D 1 2 3 4 5 6 1 2 3 4 5 1 2 3 4 1 2 3 1 2 1
题目描述
利用循环,寻找规律,打印如下数字模式:
1 2 1 2 3 2 1 2 3 4 3 2 1 2 3 4 5 4 3 2 1 2 3 4 5 6 5 4 3 2 1 2 3 4 5 6 7 6 5 4 3 2 1 2 3 4 5 6 7
题目描述
利用循环,寻找规律,打印如下数字模式:
1 1 2 1 1 2 4 2 1 1 2 4 8 4 2 1 1 2 4 8 16 8 4 2 1 1 2 4 8 16 32 16 8 4 2 1 1 2 4 8 16 32 64 32 16 8 4 2 1
题目描述
如下所示,是一个高度为9的菱形
* * * * * * * * * * * * * * * * * * * * * * * * *
用户输入菱形高度n,并打印出该高度下的菱形
输入输出描述
输入高度n,n为奇数
输出该高度的菱形
示例
输入:
5
输出:
* * * * * * * * *
题目描述
如下所示,是一个高度为9的菱形
* * * * * * * * * * * * * * * *
用户输入菱形高度n,并打印出该高度下的菱形
输入输出描述
输入高度n,n为奇数
输出该高度的菱形
示例
输入:
5
输出:
* * * * * * * *
题目描述
如下所示,是一个高度为9的菱形
* *** ***** ******* ********* ******* ***** *** *
用户输入菱形高度n,并打印出该高度下的菱形
输入输出描述
输入高度n,n为奇数
输出该高度的菱形
示例
输入:
5
输出:
* *** ***** *** *
题目描述
计算机随机生成一个[0,100]之间的整数,程序提示用户连续地输入数字直到它与那个随机生成的数字相同
对于用户输入的数字,程序会提示它是过高还是过低
输入输出描述
每次输入一个整数
每次输出该数字是过高还是过低,如果猜中则输出猜中的数字并结束
示例
输入:50
输出:高了
输入:25
输出:低了
输入:42
输出:高了
输入:39
输出:猜中了!答案就是39
题目描述
输入两个正整数,计算其最大公约数,例如4和2的最大公约数是2,16和24的最大公约数是8
输入输出描述
输入两个数字
输出最大公约数
示例1
输入:
16 24
输出:
8
示例2
输入:
7 3
输出:
1
题目描述
一个大于1的整数如果只能被正整数1和它本身整除,则它就是素数,例如2、3、5和7都是素数,而4、6、8、9则不是
输入输出描述
输入一个大于1的正整数
输出Yes表示该数字是素数,否则输出No
示例1
输入:
9
输出:
No
示例2
输入:
11
输出:
Yes
题目描述
输入两个正整数,计算其最小公倍数,例如4和2的最小公倍数是4,3和5的最小公倍数是15
输入输出描述
输入两个正整数
输出最小公倍数
示例1
输入:
3 9
输出:
9
示例2
输入:
4 6
输出:
12
题目描述
输入一个正整数,然后找出它所有的最小因子,也称之为素因子
输入输出描述
输入一个正整数
输出多行,每行输出一个素因子
示例1
输入:
120
输出:
2 2 2 3 5
解释:
2 * 2 * 2 *3 * 5 = 120
示例2
输入:
100
输出:
2 2 5 5
题目描述
如果一个正整数等于除了它本身之外所有正因子的和,那么这个数称为完全数
例如 6 = 3 + 2 + 1,28 = 14 + 7 + 4 + 2 + 1
输入输出描述
输入一个正整数
输出该数是否为完全数
示例1
输入:
6
输出:
Yes
示例2
输入:
9
输出:
No
题目描述
打印前50个素数,每打印10个素数换行
题目描述
你可以使用下面的数列近似计算π $$ π=4(1-\frac{1}{3}+\frac{1}{5}-\frac{1}{7}+\frac{1}{9}-\frac{1}{11}+...+\frac{(-1)^{i+1}}{2i-1}) $$ 当i越大时,计算结果越近似于π
题目描述
你可以使用下面的数列近似计算e $$ e=1+\frac{1}{1!}+\frac{1}{2!}+\frac{1}{3!}+\frac{1}{4!}+...+\frac{1}{i!} $$ 当i越大时,计算结果越近似于e
题目描述
延伸【Demo21剪刀石头布 I】的问题,利用循环将程序改为,计算机和电脑谁先赢三次,谁就是终极胜利者
题目描述
在数字范围[1,7]之间,任意选择两个不相同的数作为一个组合,输出每一组组合,并统计所有组合的个数
注:组合(a,b)与组合(b,a)算同一种组合,只记录一次
题目描述
有1、2、3、4这个四个数字,能组成多少个互不相同且无重复数字的三位数?分别又是多少?
题目描述
水仙花数,是一个三位数,且这个数的个位、十位和百位的立方和等于该数字本身,例如$153=1^3+5^3+3^3$
编写程序,输出所有的水仙花数
题目描述
一只青蛙,一次可以跳一个台阶或者两个台阶,现有n个台阶,问该青蛙有多少种不同的跳法?
例如:两个台阶,有两种跳法(1+1,2);四个台阶,有五种跳法(1+1+1+1,2+1+1,1+2+1,1+1+2,2+2)
题目描述
现有堆叠相加模式$a+aa+aaa+aaaa+aaaaa+......$
例如:$2+22+222+2222+22222$,其中a为2,且有5组数字
输入输出描述
输入两个数据分别为数字a和组数n
输出按照堆叠相加模式算出的和
示例
输入:
3 4
输出:
3702
解释:
3 + 33 + 333 + 3333 = 3702
题目描述
输入一个十进制正整数,输出其二进制形式
输入输出描述
输入一个十进制正整数
输出二进制字符串
示例
输入:
9
输出:
1001
题目描述
输入一个二进制字符串,输出其对应的十进制数字
输入输出描述
输入一个二进制字符串
输出十进制数字
示例
输入:
1001
输出:
9
题目描述
输入一个十进制正整数,输出其十六进制形式
输入输出描述
输入一个十进制正整数
输出十六进制字符串
示例
输入:
1233321
输出:
1e1b9
题目描述
输入一个十六进制字符串,输出其对应的十进制数字
输入输出描述
输入一个十六进制字符串
输出十进制数字
示例
输入:
1e1b9
输出:
123321
题目描述
给定两个字符串 s1 和 s2 ,求两个字符串最长的公共前缀串,字符区分大小写
输入输出描述
输入两行,分别表示s1和s2
输出前缀串
示例
输入:
abcdefg
abcdhko
输出:
abcd
题目描述
给定两个字符串 s1 和 s2 ,求 s2 在 s1 中出现的次数,字符区分大小写,已匹配的字符不计入下一次匹配
输入输出描述
输入两行字符串,分别为s1和s2,s2的长度小于等于s1
输出s2在s1中出现的次数
示例1
输入:
ABCsdABsadABCasdhjabcsaABCasd
ABC
输出:
3
示例2
输入:
AAA
输出:
2
题目描述
给定两个字符串 s1 和 s2 ,求 s1 与 s2 之间的最长公共子串,字符区分大小写
输入输出描述
输入两行字符串,分别为s1和s2
输出最长公共子串
示例
输入:
123ABCDEFG83hsad
iughABCDEFG23uy
输出:
ABCDEFG
题目描述
一些网站会给密码强加一些规则:
(1)密码必须至少有8个字符
(2)密码只能包含英文字母和数字
(3)密码应该至少包含两个数字
(4)密码应该至少包含两个大写字母
如果密码符合规则,输出Yes;否则输出No
输入输出描述
输入一串密码
输出该密码是否符合规则
示例1
输入:
输出:
No
示例2
输入:
123abcABC
输出:
Yes
题目描述
回文素数是指一个数既是素数又是回文数,例如131既是素数也是回文数
输出显示前100个回文素数,每行显示10个
题目描述
反素数是指一个将其逆向拼写后也是一个素数的非回文数,例如17和71都是素数但不是回文数,且反转后依旧是素数
输出显示前100个反素数,每行显示10个
题目描述
双素数是指一对差值为2的素数,例如3和5就是一对双素数,5和7也是一对双素数
输出显示小于1000的双素数
如果一个素数可以写成$2^p-1$的形式,其中p是某个正整数,那么这个素数就称作梅森素数
输出p≤31的所有梅森素数
有几种实现开平方$\sqrt{n}$的技术,其中一个称为巴比伦法
它通过使用下面公式的反复计算近似地得到: $$ nextGuess=(lastGuess+n/lasetGuess)/2 $$ 当nextGuess和lastGuess几乎相同时,nextGuess就是平方根的近似值
lastGuess初始值为1,如果nextGuess和lastGuess的差值小于一个很小的数,比如0.0001,就可以认为nextGuess是n的平方根的近似值;否则,nextGuess成为下一次计算的lastGuess,近似过程继续执行
编写代码,求解n的平方根的近似值
此部分重点练习:一维数组、二维数组
题目描述
读入学生成绩,获取最高分best,然后根据下面的规则赋等级值:
(1)如果分数≥best-10,等级为A
(1)如果分数≥best-20,等级为B
(1)如果分数≥best-30,等级为C
(1)如果分数≥best-40,等级为D
(1)其他情况,等级为F
输入输出描述
输入两行,第一行输入学生人数n,第二行输入n个学生的成绩
输入n行,表示每个学生的成绩等级
示例
输入:
4
40 55 70 58
输出:
学生0分数为40,等级为C
学生1分数为55,等级为B
学生2分数为70,等级为A
学生3分数为58,等级为B
题目描述
读取1到100之间的整数,然后计算每个数出现的次数
输入输出描述
输入两行,第一行为整数的个数n,第二行为n个整数
输出多行,每行表示某数及其出现的次数,顺序按照数字从小到大
示例
输入:
9
2 5 6 5 4 3 23 43 2
输出:
2出现2次
3出现1次
4出现1次
5出现2次
6出现1次
23出现1次
43出现1次
题目描述
读入n个数字,并显示互不相同的数(即一个数出现多次,但仅显示一次),数组包含的都是不同的数
输入输出描述
输入两行,第一行为数字的个数n,第二行为n个数字
输出数组,包含的都是不同的数
示例
输入:
10
1 2 3 2 1 6 3 4 5 2
输出:
1 2 3 6 4 5
题目描述
输入n个数字,求该n个数字的最大公约数
输入输出描述
输入n个数字
输出最大公约数
示例
输入:
9 12 18 21 15
输出:
3
题目描述
编程程序,对给定的数组 [1, 2, 3, 4, 5, 6, 7, 8, 9] 进行随机打乱,并输出打乱后的结果
题目描述
编写程序,对给定的数组进行判断,判断其数组元素是否非单调递减
输入输出描述
第一行输入测试数据组数T,接下来有2T行,每第一行表示数组长度n,每第二行有n个元素
输出T行,表示该数组是否有序
示例
输入:
3
5
1 2 3 4 5
4
3 1 2 4
5
1 2 2 3 4
输出:
YES
NO
YES
题目描述
输入两个英文单词,判断其是否为相似词,所谓相似词是指两个单词包含相同的字母
输入输出描述
输入两行,分别表示两个单词
输出结果,为相似词输出YES,否则输出NO
示例
输入:
listen
silent
输出:
YES
题目描述
豆机器,也称为梅花或高尔顿盒子,它是一个统计实验的设备,它是由一个三角形直立板和均匀分布的钉子构成,如下图所示:
小球从板子的开口处落下,每次小球碰到钉子,它就是50%的可能掉到左边或者右边,最终小球就堆积在板子底部的槽内
编程程序模拟豆机器,提示用户输入小球的个数以及机器的槽数,打印每个球的路径模拟它的下落,然后打印每个槽子中小球的个数
输入输出描述
输入两个数据,分别表示小球个数和槽子的个数
输出每个小球经过的路径,和最终每个槽子里小球的个数(因为牵扯随机数,程序结果不唯一,示例仅用于表明题意)
示例
输入:
5 8
输出:
LRLRLRR
RRLLLRR
LLRLLRR
RRLLLLL
LRLRRLR
0 0 1 1 3 0 0 0
题目描述
一个学校有100个更衣室和100个学生。所有的更衣室在开学第一天都是锁着的。随着学生进入,第一个学生表示为S1,打开每个更衣室;然后第二个学生S2,从第二个更衣室开始,用L2表示,关闭所有其他更衣室;学生S3从第三个更衣室L3开始,改变每三个更衣室(如果打开则关闭,如果关闭则打开);学生S4从更衣室L4开始,改变每四个更衣室;学生S5开始从更衣室L5开始,改变每五个更衣室。依次类推,直到学生S100改变L100。
在所有学生都经过了操作后,哪些更衣室是打开的?编程找出答案。
题目描述
给定两个有序递增的数组A和数组B,将其进行合并成一个新的数组C,且保持有序递增,并输出数组C
输入输出描述
第一行输入数组A的长度n,第二行输入n个元素,第三行输入数组B的长度m,第四行输入m个元素
输出数组C的n+m个元素
示例
输入:
5
1 5 16 61 111
4
2 4 5 6
输出:
1 2 4 5 5 6 16 61 111
题目描述
给定一个数组A,将第一个元素$A_0$作为枢纽,并把数组划分成三个区间,第一个区间所有元素$<A_0$,第二个区间所有元素$==A_0$,第三个区间所有元素$>A_0$
例如数组[5,2,9,3,6,8],划分后的结果为[3,2,5,9,6,8],第一个区间[3,2],第二个区间[5],第三个区间[9,6,8]
结果不唯一,只要保证划分后三个区间的元素特性即可,[2,3,5,9,8,6]、[3,2,5,6,8,9]都可作为上述划分的结果
输入输出描述
第一行输入数组的长度n,第二行输入n个元素
输出划分后的结果
示例
输入:
10
5 1 9 2 5 7 4 5 3 6
输出:
1 2 4 3 5 5 5 9 7 6
题目描述
随机产生一个单词,然后提示用户一次猜一个字母,如下示例所示。单词中的每个字母都显示为一个#号,当用户猜测正确时就会显示确切的字母,当用户完成一个单词时,显示失误的次数并询问用户是否继续玩游戏
创建一个数组存储备选单词,然后随机从中抽取进行游戏
示例
Enter a letter in word ####### > p
Enter a letter in word p###### > r
Enter a letter in word pr##r## > p
p is already in the word
Enter a letter in word pr##r## > o
Enter a letter in word pro#r## > g
Enter a letter in word progr## > n
n is not in the word
Enter a letter in word progr## > m
Enter a letter in word progr#m > a
The word is program. You missd 1 time.
Do you want to guess another word? Enter y or n >
题目描述
为了实现矩阵A乘以矩阵B,矩阵A的列数必须等于矩阵B的行数
假设矩阵C是相乘的结果,矩阵A的列数为n,那么每个元素 $C_{ij}=A_{i1}*B_{1j}+A_{i2}*B_{2j}+...+A_{in}*B_{nj}$
例如,对于两个3×3的矩阵A和B:

其中$C_{ij}=A_{i1}*B_{1j}+A_{i2}*B_{2j}+A_{i3}*B_{3j}$
输入输出描述
输入矩阵A的行列rowA和colA,接下来输入rowA行,每行colA个元素
输入矩阵B的行列rowB和colB,接下来输入rowB行,每行colB个元素
输出rowA行colB列的矩阵,为相乘的结果
示例
输入:
3 3
1 2 3
4 5 6
7 8 9
3 3
0 2.0 4.0
1 4.5 2.2
1.1 4.3 5.2
输出:
5.3 23.9 24
11.6 56.3 58.2
17.9 88.7 92.4
题目描述
给定一个二维数组,判断其中是否有四个连续的相同数字,不管这四个数字是在水平方向、垂直方向还是斜线方向
输入输出描述
输入矩阵的行列n和m
输出YES表示存在,NO不存在
示例
输入:
5 5
5 6 2 1 6
6 5 6 6 1
1 3 6 1 4
3 6 3 3 4
0 6 2 3 2
输出:
YES
题目描述
输入一个矩阵,然后把每列进行升序排序,并输出结果
输入输出描述
输入矩阵的行列n和m,接下来输入n行,每行m个元素
输出按列排序后的矩阵
示例
输入:
4 4
4 5 8 2
5 1 7 3
9 4 2 1
8 3 6 6
输出:
4 1 2 1
5 3 6 2
8 4 7 3
9 5 8 6
题目描述
给定一个元素为0或者1的矩阵,找到元素都为1且最大的子矩阵
输入输出描述
输入矩阵的行列n和m,接下来输入n行,每行m个元素
输出最大块的面积
示例
输入:
5 5
1 0 1 0 1
1 1 1 0 1
1 1 1 1 1
0 1 1 1 1
1 1 1 1 1
输出:
12
解释:
最大子矩阵为
1 1 1 1
1 1 1 1
1 1 1 1
面积为12
题目描述
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
输入输出描述
输入两个整数,分别是数组长度n和目标值target
接下来输入n个整数
输出角标
示例1
输入:
4 9
2 7 11 15
输出:
0 1
示例2
输入:
3 6
3 2 4
输出:
1 2
题目描述
给你一个整数数组 nums,将 nums 中的的所有偶数元素移动到数组的前面,后跟所有奇数元素。
返回满足此条件的 任一数组 作为答案。
输入输出描述
输入数组长度n,接下来输入n个整数
输出排序后的数组
示例
输入:
4
3 1 2 4
输出:
2 4 3 1
解释:
[4,2,3,1]、[2,4,1,3] 和 [4,2,1,3] 也会被视作正确答案
题目描述
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
子数组 是数组中的一个连续部分。
输入输出描述
输入数组长度n,接下来输入n个元素
输出最大子数组和
示例
输入:
9
-2 1 -3 4 -1 2 1 -5 4
输出:
6
题目描述
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
输入输出描述
输入矩阵的行列row和col,接下来有row行输入,每行col个数字
输出遍历后的结果
示例
输入:
3 4
1 2 3 4
5 6 7 8
9 10 11 12
输出:
1 2 3 4 8 12 11 10 9 5 6 7
题目描述
给你一个满足下述两条属性的 m x n 整数矩阵:
给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。
输入输出描述
输入矩阵的行row和列col,和目标值target
接下来输入row行,每行col个元素
输出是否存在
示例
输入:
3 4 3
1 3 5 7
10 11 16 20
23 30 34 60
输出:
true
题目描述
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:
给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。
输入输出描述
输入矩阵的行row和列col,和目标值target
接下来输入row行,每行col个元素
输出是否存在
示例
输入:
5 5 5
1 4 7 11 15
2 5 8 12 19
3 6 9 16 22
10 13 14 17 24
18 21 23 26 30
输出:
true
题目描述
给你一个整数数组 arr,只有可以将其划分为三个和相等的 非空 部分时才返回 true,否则返回 false。
形式上,如果可以找出索引 i + 1 < j 且满足 (arr[0] + arr[1] + ... + arr[i] == arr[i + 1] + arr[i + 2] + ... + arr[j - 1] == arr[j] + arr[j + 1] + ... + arr[arr.length - 1]) 就可以将数组三等分。
输入输出描述
输入数组长度n,和n个元素
输出结果
示例
输入:
11
0 2 1 -6 6 -7 9 1 2 0 1
输出:
true
解释:
0 + 2 + 1 = -6 + 6 - 7 + 9 + 1 = 2 + 0 + 1
题目描述
给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。
连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], ..., nums[r - 1], nums[r]] 就是连续递增子序列。
输入输出描述
输入数组长度n,和n个元素
输出最长连续递增序列的长度
示例
输入:
5
1 3 5 4 7
输出:
3
解释:
最长连续递增序列是 [1,3,5], 长度为3。
尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为 5 和 7 在原数组里被 4 隔开。
题目描述
给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。
输入输出描述
输入数组长度n和目标值target,接下来输入n个元素
输出最小子数组长度
示例
输入:
6 7
2 3 1 2 4 3
输出:
2
解释:
子数组 [4,3] 是该条件下的长度最小的子数组
题目描述
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m+n)) 。
输入输出描述
输入m和n,然后分别输入m个元素和n个元素
输出中位数
示例1
输入:
2 1
1 3
2
输出:
2.0
解释:
合并数组 = [1,2,3] ,中位数2
示例2
输入:
2 2
1 2
3 4
输出:
2.5
题目描述
给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。
找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
返回容器可以储存的最大水量。
输入输出描述
输入数组长度n,接下来输入n个元素
输出最大水量
示例1
输入:
9
1 8 6 2 5 4 8 3 7
输出:
49
解释:
![]()
图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49
此部分重点练习:栈、队列、线性表、哈希表、集合、优先队列、字符串
题目描述
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。
返回 滑动窗口中的最大值 。
输入输出描述
输入数组长度n和k,接下来输入n个元素
输出每个区间的最大值
示例
输入:
8 3
1 3 -1 -3 5 3 6 7
输出:
3 3 5 5 6 7
解释:
滑动窗口的位置 最大值
[1 3 -1] -3 5 3 6 7 3 1 [3 -1 -3] 5 3 6 7 3 1 3 [-1 -3 5] 3 6 7 5 1 3 -1 [-3 5 3] 6 7 5 1 3 -1 -3 [5 3 6] 7 6 1 3 -1 -3 5 [3 6 7] 7
题目描述
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
输入描述
输入一个只包含上述括号的字符串
输出其是否匹配
示例1
输入:
()[]{}
输出:
true
示例2
输入:
({[]{}[)]
输出:
false
题目描述
给你一个字符串 ,表示一个根据 逆波兰表示法 表示的算术表达式。
请你计算该表达式。返回一个表示表达式值的整数。
注意:
输入输出描述
输入一个由数字和操作符组成的表达式
输出表达式的计算结果
示例1
输入:
2 1 + 3 *
输出:
9
解释:
该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9
示例2
输入:
4 13 5 / +
输出:
6
解释:
该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 6
示例3
输入:
10 6 9 3 + - 11 * / * 17 + 5 +
输出:
22
解释:
该算式转化为常见的中缀算术表达式为 ((10 * (6 / ((9 + 3) * -11))) + 17) + 5 = 22
题目描述
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
输入输出描述
输入一个字符串s
输出最长子串的长度
示例1
输入:
输出:
3
解释:
因为无重复字符的最长子串是 "abc",所以其长度为 3
示例2
输入:
bbbbb
输出:
1
解释:
因为无重复字符的最长子串是 "b",所以其长度为 1
题目描述
给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
输入输出描述
输入nums1的长度n和n个元素,输入nums2的长度m和每个元素
输出所有交集元素
示例1
输入:
4
1 2 2 1
2
2 2
输出:
2
示例2
输入:
3
4 9 5
5
9 4 9 8 4
输出:
4 9
解释:
[9, 4] 也是可通过的
题目描述
给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。
输入输出描述
输入nums1的长度n和n个元素,输入nums2的长度m和每个元素
输出交集元素
示例1
输入:
4
1 2 2 1
2
2 2
输出:
2 2
示例2
输入:
3
4 9 5
5
9 4 9 8 4
输出:
4 9
题目描述
给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的连续子数组的个数 。
子数组是数组中元素的连续非空序列。
输入输出描述
输入数组长度n和k,接下来输入n个元素
输出个数
示例1
输入:
3 2
1 1 1
输出:
2
示例2
输入:
3 3
1 2 3
输出:
2
题目描述
国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如:
".-""-...""-.-."以此类推为了方便,所有26个英文字母的摩尔斯密码表如下:
[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
给你一个字符串数组 words ,每个单词可以写成每个字母对应摩尔斯密码的组合。
例如,"cab" 可以写成 "-.-..--..." ,(即 "-.-." + ".-" + "-..." 字符串的结合)。我们将这样一个连接过程称作 单词翻译
对 words 中所有单词进行单词翻译,返回不同 单词翻译 的数量
输入输出描述
输入一组单词
输出不一样的翻译数量
示例
输入:
gin zen gig msg
输出:
2
解释:
各单词翻译如下: "gin" -> "--...-." "zen" -> "--...-." "gig" -> "--...--." "msg" -> "--...--."
共有 2 种不同翻译, "--...-." 和 "--...--.".
题目描述
给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。
输入输出描述
输入数组长度n和k,接下来输入n个元素
输出前k个高频元素
示例
输入:
6 2
1 1 1 2 2 3
输出:
1 2
题目描述
给定一个字符串 s ,根据字符出现的 频率 对其进行 降序排序 。一个字符出现的 频率 是它出现在字符串中的次数。
返回 已排序的字符串 。如果有多个答案,返回其中任何一个。
输入输出描述
输入一个字符串
输出排序后的字符串
示例1
输入:
tree
输出:
eert
解释:
'e'出现两次,'r'和't'都只出现一次。 因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。
示例2
输入:
cccaaa
输出:
cccaaa
解释:
'c'和'a'都出现三次。此外,"aaaccc"也是有效的答案。 注意"cacaca"是不正确的,因为相同的字母必须放在一起。
题目描述
将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下:
P A H N A P L S I I G Y I R
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"。
输入输出描述
输入s和numRows
输出变换后的顺序
示例1
输入:
PAYPALISHIRING 3
输出:
PAHNAPLSIIGYIR
示例2
输入:
PAYPALISHIRING 4
输出:
PINALSIGYAHRPI
题目描述
给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。
输入输出描述
输入行数numRows
输出对应杨慧三角
示例1
输入:
5
输出:
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1
题目描述
超级丑数 是一个正整数,并满足其所有质因数都出现在质数数组 primes 中。
给你一个整数 n 和一个整数数组 primes ,返回第 n 个 超级丑数 。
题目数据保证第 n 个 超级丑数 在 32-bit 带符号整数范围内。
输入输出描述
输入数组长度n和primes
输出超级丑数
示例1
输入:
12
2 7 13 19
输出:
32
解释:
给定长度为 4 的质数数组 primes = [2,7,13,19],前 12 个超级丑数序列为:[1,2,4,7,8,13,14,16,19,26,28,32]
示例2
输入:
1
2 3 5
输出:
1
解释:
1 不含质因数,因此它的所有质因数都在质数数组 primes = [2,3,5] 中
(1)牛客-华为机试篇
(2)牛客-剑指offer篇
(3)牛客-名企真题篇
(4)牛客-算法分类篇
(5)力扣-更多更全面