山(JAVA)
题目描述这天小明正在学数数。 他突然发现有些正整数的形状像一座“山”,比如123565321、145541。 它们左右对称(回文)且数位上的数字先单调不减,后单调不增。 小明数了很久也没有数完,他想让你告诉他在区间[2022:2022222022]中有多少个数的形状像一座“山”。 这是一道结果填空的题,你只需要算出结果后提交即可。 本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
代码详解public class Main { public static void main(String[] args) { int count = 0; int top = 0; f: for (long i = 2022; i <= 2022222022; i++) { String str = String.valueOf(i); for (int j = 0; j < str.length(); j++) { ...
蓝桥杯-时间显示
题目描述小蓝要和朋友合作开发一个时间显示的网站。
在服务器上,朋友已经获取了当前的时间,用一个整数表示,值为从 19701970 年 11 月 11 日 00:00:0000:00:00 到当前时刻经过的毫秒数。
现在,小蓝要在客户端显示出这个时间。小蓝不用显示出年月日,只需要显示出时分秒即可,毫秒也不用显示,直接舍去即可。
给定一个用整数表示的时间,请将这个时间对应的时分秒输出。
输入描述输入一行包含一个整数,表示时间。
xxxxxxxxxx import java.util.Scanner;public class Main { public static void main(String[] args) { //第一行第一列是1,第二行第二列是5,第三行第三列是13 //即1,5,13,25,41…. //规律:n1 = 1 + 4 * 0(第一行) // n2 = n1 + 4 * 1(第二行) // n3 = n2 + 4 * 2(第三行) // …. ...
跳跃(JAVA)
题目描述小蓝在一个 n 行 m 列的方格图中玩一个游戏。
开始时,小蓝站在方格图的左上角,即第 11 行第 11 列。
小蓝可以在方格图上走动,走动时,如果当前在第 r 行第 c 列,他不能走到行号比 r 小的行,也不能走到列号比 c 小的列。同时,他一步走的直线距离不超过 33。
例如,如果当前小蓝在第 33 行第 55 列,他下一步可以走到第 33 行第 66 列、第 33 行第 77 列、第 33 行第 88 列、第 44 行第 55 列、第 44 行第 66 列、第 44 行第 77 列、第 55 行第 55 列、第 55 行第 66 列、第 66 行第 55 列之一。
小蓝最终要走到第 n 行第 m 列。
在图中,有的位置有奖励,走上去即可获得,有的位置有惩罚,走上去就要接受惩罚。奖励和惩罚最终抽象成一个权值,奖励为正,惩罚为负。
小蓝希望,从第 11 行第 11 列走到第 n 行第 m 列后,总的权值和最大。请问最大是多少?
输入描述输入的第一行包含两个整数 n,m,表示图的大小。
接下来 n 行,每行 m 个整数,表示方格图中每个点的权值。
其中,1≤n≤100,−10^ ...
最少刷题数(JAVA)
题目描述小蓝老师教的编程课有 N 名学生,编号依次是 1 . . . N。第 i 号学生这学期刷题的数量是 Ai。
对于每一名学生,请你计算他至少还要再刷多少道题,才能使得全班刷题比他多的学生数不超过刷题比他少的学生数。
输入格式第一行包含一个正整数 N。
第二行包含 N 个整数:A1, A2, A3, . . . , AN.
输出格式输出 N 个整数,依次表示第 1 . . . N 号学生分别至少还要再刷多少道题。
样例输入5
12 10 15 20 6
样例输出0 3 0 0 7
提示对于 30% 的数据,1 ≤ N ≤ 1000, 0 ≤ Ai ≤ 1000.
对于 100% 的数据,1 ≤ N ≤ 100000, 0 ≤ Ai ≤ 100000.
思路1
键盘录入n,然后遍历录入长度为n的数组
利用循环,判断全班比第i个刷的多以及刷的少的数目
根据多和少的数目进行判断,对a【i】进行++,直到符合条件输出
代码1import java.util.Scanner;public class Lanqiao2673 { public static void mai ...
特别数的和(JAVA)
题目描述小明对数位中含有 2、0、1、9 的数字很感兴趣(不包括前导 0),在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。
请问,在 1 到 n 中,所有这样的数的和是多少?
输入描述输入一行包含一个整数 (1≤n≤10^4)。
输出描述输出一行,包含一个整数,表示满足条件的数的和。
输入输出样例示例
输入
40
输出
574
运行限制
最大运行时间:1s
最大运行内存: 256M
思路这道题与最基础的判断数字中是否含有5,7或者是5,7的倍数类似,直接采取暴力求解的方法即可,因为值判断是否含有某个数字,所以也可以用转换为字符串,利用字符串方法Charat()进行判断
注:使用Charat()方法时,注意判断的是字符,需要使用单引号’’将数字括起来
eg:下面代码块中使用的即是典型例子
if (s.charAt(i) == '0' || s.charAt(i) == '1' || s.charAt(i) == '2' || s.charAt(i ...
门牌制作(JAVA)
题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可
小蓝要为一条街的住户制作门牌号。
这条街一共有 20202020 位住户,门牌号从 11 到 20202020 编号。
小蓝制作门牌的方法是先制作 00 到 99 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、71、0、1、7,即需要 11 个字符 00,22 个字符 11,11 个字符 77。
请问要制作所有的 11 到 20202020 号门牌,总共需要多少个字符 22?
运行限制
最大运行时间:1s
最大运行内存: 128M
#代码
int sum=0; for (int i = 1; i <= 2020; i++) { String s=""+i; for (int j = 0; j < s.length(); j++) { if(s.charAt(j)=='2'){ ...
成绩统计(JAVA)
题目描述小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。
如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。
请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整 数。
输入描述输入的第一行包含一个整数**n (1≤n≤104)**,表示考试人数。
接下来 n 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。
输出描述输出两行,每行一个百分数,分别表示及格率和优秀率。百分号前的部分 四舍五入保留整数。
输入输出样例示例
输入
780925674881000
输出
71%43%
运行限制
最大运行时间:1s
最大运行内存: 256M
代码实现import java.util.Scanner;public class Lanqiao02 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int i=sc.nextInt ...
单词分析(JAVA)
题目描述小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组 成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。
现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这 个字母出现的次数。
输入描述输入一行包含一个单词,单词只由小写英文字母组成。
对于所有的评测用例,输入的单词长度不超过 1000。
#输出描述
输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪 个。如果有多个字母出现的次数相等,输出字典序最小的那个。
第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。
##输入输出样例
###示例 1
输入
lanqiao
输出
a2
示例 2
输入
longlonglongistoolong
输出
o6
##运行限制
最大运行时间:1s
最大运行内存: 256M
思路:
设置一个长度为26的数组记录每字母出现的次数(eg:a【0】代表a,若a出现一次则a【0】++)
利用CharAt方法获取第i位的字符,并 ...
阶乘计算(JAVA)
题目描述满足 N! 的末尾恰好有 K 个 0 的最小的 N 是多少?
如果这样的 N 不存在输出 −1。
输入格式一个整数 K。
输出格式一个整数代表答案。
样例输入2
样例输出10
提示对于 30% 的数据,1 ≤ K ≤ 106 .
对于 100% 的数据,1 ≤ K ≤ 1018
代码1:暴力解法利用取余,遍历1~10^18(题目中100%的数据规模)内所有数,对每个数取余判断是否为K个0,很明显是超时了。但可以得到部分的分数,没有时间的话可以这样简单处理。
public class Lanqiao2674 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int k=sc.nextInt(); int n=1; for (int i = 0; i < k; i++) { n*=10; } long sum=1 ...
验证码(random类)
需求:定义方法实现随机产生一个5位的验证码
验证码格式:1.长度为5
2.前四位是大写字母或者小写字母最后一位是数字
分析:1.需要用到random类
2.可以先将字母放入数组中,再根据随机索引抽取随机字母
import java.util.Random;public class Vcode { public static void main(String[] args) { //1.创立一个数组,将大小写字母都放入其中 char[] Arr=new char[52]; //利用ASCII码表 for (int i = 0; i < 52; i++) { //添加大写字母 if(i<26) { Arr[i] = (char) (65 + i); } //添加小写字母 else{ Arr[ ...