A+B
【题目描述】
欢迎开启算法 OJ 题的大门,本题为经典的 A+B
A+B 入门题,我们会以此题为示例介绍蓝桥云课 OJ 系统的正确使用方法。
输入两个正整数 A,B,请你计算 A+B,并输出。
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int a = scan.nextInt(); int b = scan.nextInt(); System.out.println(a+b); scan.close(); } }
MP3储存
【题目描述】
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
如果一个 MP3 文件占用磁盘的大小是 4MB,小蓝的硬盘还剩下 100GB 的空间,请问他还可以放多少个这样的 MP3 文件?
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... System.out.println(25600); scan.close(); } }
单词分析
【题目描述】
小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组 成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。
现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这 个字母出现的次数。
输入描述
输入一行包含一个单词,单词只由小写英文字母组成。
对于所有的评测用例,输入的单词长度不超过 1000。
输出描述
输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪 个。如果有多个字母出现的次数相等,输出字典序最小的那个。
第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。
输入输出样例
示例 1
输入
lanqiao
输出
a 2
示例 2
输入
longlonglongistoolong
输出
o 6
运行限制
最大运行时间:1s
最大运行内存: 256M
【分析与解答】
这道题我一开始想直接在字符串上搞动作,后来发现这个方法有个什么问题,就是会搞乱字符串的顺序,后来发现可以用数组索引的方式,这样就简单多了
先统计每个字符所在的位置出现的次数
然后在作出比较就可以了
这样做就简化了统计之后锁定响应位置的事情
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... String temp=scan.nextLine(); int a[]=new int[26]; for(int i=0;i<temp.length();i++){ a[temp.charAt(i)-'a']++; } int max=0; char ch='a'; for(int i=0;i<a.length;i++){ if(a[i]>max){ max=a[i]; ch=(char)('a'+i); } } System.out.println(ch); System.out.println(max); scan.close(); } }
成绩统计
【题目描述】
小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。
如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。
请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整 数。
输入描述
输入的第一行包含一个整数 n\ (1 \leq n \leq 10^4)n (1≤n≤10
4
),表示考试人数。
接下来 nn 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。
输出描述
输出两行,每行一个百分数,分别表示及格率和优秀率。百分号前的部分 四舍五入保留整数。
输入输出样例
示例
输入
7
80
92
56
74
88
100
0
copy
输出
71%
43%
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int n=scan.nextInt(); int a[]=new int[2]; for(int i=0;i<n;i++){ int temp=scan.nextInt(); if(temp>=85){ a[0]++; }else if(temp>=60){ a[1]++; } } System.out.println(Math.round((double)(a[1]+a[0])*100/n)+"%"); System.out.println(Math.round((double)a[0]*100/n)+"%"); scan.close(); } }
最短路
【题目描述】
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
如下图所示,GG 是一个无向图,其中蓝色边的长度是 11、橘色边的长度是 22、绿色边的长度是 33。
则从 AA 到 SS 的最短距离是多少?
运行限制
最大运行时间:1s
最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... System.out.println(6); scan.close(); } }
门牌制作
【题目描述】
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝要为一条街的住户制作门牌号。
这条街一共有 20202020 位住户,门牌号从 11 到 20202020 编号。
小蓝制作门牌的方法是先制作 00 到 99 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、71、0、1、7,即需要 11 个字符 00,22 个字符 11,11 个字符 77。
请问要制作所有的 11 到 20202020 号门牌,总共需要多少个字符 22?
运行限制
最大运行时间:1s
最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int count=0; String aString=""; for (int i = 1; i <=2020; i++) { aString=i+""; for (int j = 0; j < aString.length(); j++) { if(aString.charAt(j)=='2') { count++; } } } System.out.println(count); scan.close(); } }
购物单
【题目描述】
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。
这不,大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的。
小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定。
现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物。
取款机只能提供 100100 元面额的纸币。小明想尽可能少取些现金,够用就行了。 你的任务是计算出,小明最少需要取多少现金。
以下是让人头疼的购物单,为了保护隐私,物品名称被隐藏了。
**** 180.90 88折
**** 10.25 65折
**** 56.14 9折
**** 104.65 9折
**** 100.30 88折
**** 297.15 半价
**** 26.75 65折
**** 130.62 半价
**** 240.28 58折
**** 270.62 8折
**** 115.87 88折
**** 247.34 95折
**** 73.21 9折
**** 101.00 半价
**** 79.54 半价
**** 278.44 7折
**** 199.26 半价
**** 12.97 9折
**** 166.30 78折
**** 125.50 58折
**** 84.98 9折
**** 113.35 68折
**** 166.57 半价
**** 42.56 9折
**** 81.90 95折
**** 131.78 8折
**** 255.89 78折
**** 109.17 9折
**** 146.69 68折
**** 139.33 65折
**** 141.16 78折
**** 154.74 8折
**** 59.42 8折
**** 85.44 68折
**** 293.70 88折
**** 261.79 65折
**** 11.30 88折
**** 268.27 58折
**** 128.29 88折
**** 251.03 8折
**** 208.39 75折
**** 128.88 75折
**** 62.06 9折
**** 225.87 75折
**** 12.89 75折
**** 34.28 75折
**** 62.16 58折
**** 129.12 半价
**** 218.37 半价
**** 289.69 8折
需要说明的是,88 折指的是按标价的 88% 计算,而 8 折是按 80% 计算,余者类推。 特别地,半价是按 50% 计算。
请输出小明要从取款机上提取的金额,单位是元。
【分析与解答】
很唬人的一道题,其实没啥技术含量,根本不用动用编程,用execl解决就可以了
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... System.out.println(5200); scan.close(); } }
空间
【题目描述】
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝准备用 256MB的内存空间开一个数组,数组的每个元素都是 32 位 二进制整数,如果不考虑程序占用的空间和维护内存需要的辅助空间,请问 256MB 的空间可以存储多少个 32 位二进制整数?
运行限制
最大运行时间:1s
最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int a=256*8*1024*1024/32; //在此输入您的代码... System.out.println(Math.abs(a)); scan.close(); } }
跑步
【题目描述】
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝每天都锻炼身体。
正常情况下,小蓝每天跑 1 千米。如果某天是周一或者月初(1 日),为了激励自己,小蓝要跑 2千米。如果同时是周一或月初,小蓝也是跑 2 千米。
小蓝跑步已经坚持了很长时间,从 2000 年 1月 1 日周六(含)到 2020 年 10 月 1 日周四(含)。请问这段时间小蓝总共跑步多少千米?
运行限制
最大运行时间:1s
最大运行内存: 128M
【分析与解答】
这道题我建议也是用execl解决
1.新建一个Excel文件
2.填充2000年1月1日到2020年10月1日
3.通过单元格格式中在日期后加上对应的星期数 4.单元格行数记为h;查找“星期一”,找到的数量记为a; 查找“月1日”(不能是1日,否则如11日也会计入),找到的数量记为b;查找“月1日星期一”,找到的数量记为c;答案n=h+a+b-c;
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... System.out.println(8879); scan.close(); } }
蛇形填数
【题目描述】
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
如下图所示,小明用从 11 开始的正整数“蛇形”填充无限大的矩阵。
1 2 6 7 15 ...
3 5 8 14 ...
4 9 13 ...
10 12 ...
11 ...
...
容易看出矩阵第二行第二列中的数是 55。请你计算矩阵中第 2020 行第 2020 列的数是多少?
运行限制
最大运行时间:1s
最大运行内存: 128M
【分析与解答】
这道题是来回绕,那只要跟着他一起绕就可以了
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... System.out.println(761); scan.close(); } }
棋盘放麦子
【题目描述】
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
你一定听说过这个故事。国王对发明国际象棋的大臣很佩服,问他要什么报酬,大臣说:请在第 1 个棋盘格放 11 粒麦子,在第 2 个棋盘格放 2 粒麦子,在第 3 个棋盘格放 4 粒麦子,在第 4 个棋盘格放 8 粒麦子,......后一格的数字是前一格的两倍,直到放完所有棋盘格(国际象棋共有 64 格)。
国王以为他只是想要一袋麦子而已,哈哈大笑。
当时的条件下无法准确计算,但估算结果令人吃惊:即使全世界都铺满麦子也不够用!
请你借助计算机准确地计算,到底需要多少粒麦子。
运行限制
最大运行时间:1s
最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; import java.math.BigInteger; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... BigInteger a =new BigInteger("0"); BigInteger b = new BigInteger("2"); for (int i = 0; i < 64; i++) { a = a.add(b.pow(i)); } System.out.println(a); scan.close(); } }
特别数的和
【题目描述】
小明对数位中含有 2、0、1、9 的数字很感兴趣(不包括前导 0),在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。
请问,在 1 到 n 中,所有这样的数的和是多少?
输入描述
输入格式:
输入一行包含两个整数 n(1 ≤ n ≤ 10^4)
输出描述
输出一行,包含一个整数,表示满足条件的数的和。
输入输出样例
示例
输入
40
输出
574
运行限制
最大运行时间:1s
最大运行内存: 256M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... System.out.println(getContains(scan.nextInt())); scan.close(); } public static int getContains(int num) { int total = 0; if(num>=1 && num<=10000) { for(int i=0;i<=num;i++) { if((i+"").indexOf("0")!=-1 || (i+"").indexOf("1")!=-1 || (i+"").indexOf("2")!=-1 || (i+"").indexOf("9")!=-1) { total += i; } } } return total; } }
质数
【题目描述】
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
我们知道第一个质数是 2、第二个质数是 3、第三个质数是 5……
请你计算第 2019个质数是多少?
运行限制
最大运行时间:1s
最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int count=0; for(int i=2;i<Integer.MAX_VALUE;i++){ if(judge(i)){ count++; } if(count==2019){ System.out.println(i); break; } } scan.close(); } public static boolean judge(int a){ for(int i=2;i<=Math.sqrt(a);i++){ if(a%i==0){ return false; } } return true; } }
奇数倍数
【题目描述】
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
请你找到最小的整数 X同时满足:
X是 2019的整倍数;
X的每一位数字都是奇数。
运行限制
最大运行时间:1s
最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... for(long i= 2019;i<Long.MAX_VALUE;i=i+2019){ if(judge(i)){ System.out.println(i); break; } } scan.close(); } public static boolean judge(long a){ String res=a+""; for(int i=0;i<res.length();i++){ if((res.charAt(i)-'0')%2==0){ return false; } } return true; } }
排序
【题目描述】
给定一个长度为 NN 的数组 AA,请你先从小到大输出它的每个元素,再从大到小输出它的每个元素。
输入描述
输出描述
输出共两行,每行包含 NN 个整数,表示答案。
输入输出样例
示例 1
输入
5 1 3 2 6 5
输出
1 2 3 5 6 6 5 3 2 1
运行限制
- 最大运行时间:3s
- 最大运行内存: 128M
【分析与解答】
这道题好像用数组和Arrays会超时
【Java语言实现】
import java.awt.List; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int n=scan.nextInt(); ArrayList<Integer> list=new ArrayList<>(); for(int i=0;i<n;i++) { list.add(scan.nextInt()); } Collections.sort(list); for(int i=0;i<n;i++) { System.out.print(list.get(i)+" "); } System.out.println(); for(int i=n-1;i>=0;i--) { System.out.print(list.get(i)+" "); } } }
回文判定
【题目描述】
输入描述
输出描述
输入输出样例
示例 1
输入
abcba
输出
Y
示例 2
输入
abcbb
输出
N
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... String s=scan.nextLine(); if(new StringBuffer(s).reverse().toString().equals(s)){ System.out.println("Y"); }else{ System.out.println("N"); } scan.close(); } }
等差数列
【题目描述】
输入描述
输出描述
输出一个整数表示答案。
输入输出样例
示例
输入
5 2 6 4 10 20
输出
10
样例说明: 包含 2、6、4、10、20 的最短的等差数列是 2、4、6、8、10、12、14、16、 18、20。
【分析与解答】
【方法一】
这道题先排序,然后默认两个数字之间最小的是等差数列中的公差
【Java语言实现】
import java.util.Scanner; //1:无需package //2: 类名必须Main, 不可修改 import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] nums = new int[n]; for (int i = 0; i < n; i++) { nums[i] = sc.nextInt(); } Arrays.sort(nums); int min = Integer.MAX_VALUE; for (int i = 1; i < n; i++) { if (nums[i] - nums[i - 1] < min) { min = nums[i] - nums[i - 1]; } } try { int res = (nums[n - 1] - nums[0]) / min + 1; System.out.println(res); } catch (Exception e) { System.out.println(n); } sc.close(); } }
相乘
【题目描述】
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
【方法一】
一开始以为要用大整数,结果发现没有超过long的范围,所以用long暴力求解就行
【Java语言实现】
import java.util.Scanner; //1:无需package //2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... long num = 0; for (long i = 1; i <= 1000000007; i++) { if (i * 2021 % 1000000007 == 999999999) { num = i; System.out.println(num); return; } } scan.close(); } }
四平方和
【题目描述】
输入描述
输出描述
要求输出 4 个非负整数,按从小到大排序,中间用空格分开
输入输出样例
示例
输入
12
输出
0 2 2 2
运行限制
- 最大运行时间:3s
- 最大运行内存: 256M
【分析与解答】
【方法一】
暴力求解,四层循环,但是这里有个问题用(int)Math.sqrt(num)不会超时,Math.sqrt(num)会超时
【Java语言实现】
import java.util.Scanner; //1:无需package //2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); // 在此输入您的代码... int num = scan.nextInt(); int temp=(int)Math.sqrt(num); for (int a = 0; a <= temp; a++) { for (int b = a; b <= temp; b++) { for (int c = b; c <= temp; c++) { for (int d = c; d <= temp; d++) { if (a * a + b * b + c * c + d * d == num) { System.out.println(a + " " + b + " " + c + " " + d); return; } } } } } scan.close(); } }
网友年龄
【题目描述】
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
【方法一】
这道题其实没啥难度,跟着题目的描述一起走就行了
【Java语言实现】
import java.util.Scanner; //1:无需package //2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); // 在此输入您的代码... int count = 0; for (int friend = 27; friend <= 99; friend++) { int sun = friend - 27; int friendchange = Integer.parseInt(new StringBuffer(friend + "").reverse().toString()); if (friendchange == sun) { count++; } } System.out.println(count); scan.close(); } }
煤球数目
【题目描述】
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
有一堆煤球,堆成三角棱锥形。具体: 第一层放 11 个, 第二层 33 个(排列成三角形), 第三层 66 个(排列成三角形), 第四层 1010 个(排列成三角形), .... 如果一共有 100100 层,共有多少个煤球?
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
这道题目的数字是这样
1 3 6 10
1 1+2 3+3 6+4
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int count=0; int num=0; int sum=0; for(int i=0;i<101;i++){ num+=count; count++; sum=sum+num; } System.out.println(sum); scan.close(); } }
三角形描述
【题目描述】
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
如上图所示。图中的所有小方格面积都是 11。
那么,图中的三角形面积应该是多少呢?
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
这道题目用正方形减去旁边三个三角形面积即可
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... System.out.println(64-16-12-8); scan.close(); } }
第39级台阶
【题目描述】
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小明刚刚看完电影《第 3939 级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是 3939 级!
站在台阶前,他突然又想着一个问题:
如果我每一步只能迈上 11 个或 22 个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完 3939 级台阶,有多少种不同的上法呢?
请你利用计算机的优势,帮助小明寻找答案。
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... System.out.println((step(39)+1)/2); scan.close(); } public static long step(int num){ if(num==1){ return 1; } if(num==2){ return 2; } return step(num-1)+step(num-2); } }
平方和
【题目描述】
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小明对数位中含有 2、0、1、92、0、1、9 的数字很感兴趣,在 11 到 4040 中这样的数包括 1、2、9、101、2、9、10 至 32、3932、39 和 4040,共 2828 个,他们的和是 574574,平方和是 1436214362。
注意,平方和是指将每个数分别平方后求和。
请问,在 11 到 20192019 中,所有这样的数的平方和是多少?
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... Long result = 0l; for (int i = 1; i <= 2019; i++) { String s = new String("" + i + ""); if (s.contains("0") || s.contains("1") || s.contains("2") || s.contains("9")) { result += (long)Math.pow(i, 2); } } System.out.println(result); scan.close(); } }
错误票据
【题目描述】
输入描述
输出描述
输入输出样例
示例
输入
2 5 6 8 11 9 10 12 9
输出
7 9
运行限制
- 最大运行时间:1s
- 最大运行内存: 64M
【分析与解答】
首先先把所有的数字都列到一个数组里
然后查找两个数字相同的数字和前后差2的数字
【Java语言实现】
import java.util.Scanner; import java.util.*; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner sc= new Scanner(System.in); ArrayList<Integer> a=new ArrayList<>(); int n=sc.nextInt(); sc.nextLine();//吸收掉整数后面的换行符 for(int i=0;i<n;i++){ String s=sc.nextLine(); String[] x=s.split(" "); //将字符串一空格分割成若干个字符串,返回一个字符串数组 for(int j=0;j<x.length;j++){ a.add(Integer.parseInt(x[j])); } } int[] b=new int[a.size()]; for(int i=0;i<a.size();i++){ b[i]=a.get(i); } Arrays.sort(b); int x=0;//相同 int y=0;//空掉 for(int i=1;i<a.size();i++){ if(b[i]-b[i-1]==0){ x=b[i]; } if(b[i]-b[i-1]==2){ y=b[i]-1; } } System.out.println(y+" "+x); } }
第几天
【题目描述】
【分析与解答】
【Java语言实现】
import java.util.Scanner; import java.util.Calendar; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR,2000); calendar.set(Calendar.MONTH,Calendar.MAY); calendar.set(Calendar.DATE,4); System.out.println(calendar.get(Calendar.DAY_OF_YEAR)); scan.close(); } }
猜年龄
【题目描述】
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); A:for(int i=1;i<=99;i++) { for(int j=1;j<=i+8;j++) { if(i*j==(i+j)*6) { System.out.println(i); break A; } } } scan.close(); } }
数列求值
【题目描述】
【分析与解答】
20190324 这个数过于庞大 无论是递归还是迭代 程序都无法正常运行
而且int 、 long、BigDecimal等都无法、承载这么大的数 * 题目要求我们只取最后四位
那我们可以对每次运算出来的结果 %10000 这样每次结果就都保留最后四位数字
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { int a = 1,b = 1,c = 1,d = 0; for(int i = 4;i<=20190324;i++){ d = (a+b+c)%10000; a = b; b = c; c = d; } System.out.println(d); } }
字符计数
【题目描述】
给定一个单词,请计算这个单词中有多少个元音字母,多少个辅音字母。
元音字母包括 a, e, i, o, u,共五个,其他均为辅音字母。
输入描述
输入格式:
输入一行,包含一个单词,单词中只包含小写英文字母。单词中的字母个数不超过 100。
输出描述
输出两行,第一行包含一个整数,表示元音字母的数量。
第二行包含一个整数,表示辅音字母的数量。
输入输出样例
示例
输入
lanqiao
输出
4 3
运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String str=scan.next(); int a=0,b=0; for(int i=0;i<str.length();i++) { if(str.charAt(i)=='a'||str.charAt(i)=='e'||str.charAt(i)=='i'||str.charAt(i)=='o'||str.charAt(i)=='u') { a++; } else { b++; } } System.out.println(a); System.out.println(b); scan.close(); } }
猜生日
【题目描述】
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { //在此输入您的代码... int i,j,sum; for(i=1900;i<2012;i++){ for(j=1;j<30;j++){ sum=i*10000+600+j; if(sum%2012==0 && sum%3==0 && sum%12==0){ System.out.println(sum); } } } } }
取位数
【题目描述】
import java.util.*; public class Main { static int len(int x){ if(x<10) return 1; return len(x/10)+1; } // 取x的第k位数字 static int f(int x, int k){ if(len(x)-k==0) return x%10; return ______________________; //填空 } public static void main(String[] args) { int x = 23513; //System.out.println(len(x)); System.out.println(f(x,3)); System.out.println(f(893275,2)); } }
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 import java.util.*; public class Main { static int len(int x){ if(x<10) return 1; return len(x/10)+1; } // 取x的第k位数字 static int f(int x, int k){ if(len(x)-k==0) return x%10; return (int)(x/Math.pow(10,len(x)-k))%10; //填空 } public static void main(String[] args) { int x = 23513; //System.out.println(len(x)); System.out.println(f(x,3)); System.out.println(f(893275,2)); } }
猴子分香蕉
【题目描述】
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { for(int i = 1;;i++){ int b = i; if(b % 5 == 1){ b = (b-1)/5*4; if(b % 5 ==2){ b = (b-2)/5*4; if(b % 5 == 3){ b = (b-3)/5*4; if(b % 5 == 4){ b = (b-4)/5*4; if(b % 5 == 0 && b >= 5){//最少也有五个香蕉 System.out.println(i); break; } } } } } } } }
求和
【题目描述】
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int sum=0; for(int i=1;i<=2019;i++){ if((i+"").contains("2")||(i+"").contains("0")||(i+"").contains("1")||(i+"").contains("9")){ sum=sum+i; } } System.out.println(sum); scan.close(); } }
找素数
【题目描述】
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int count=0; for(int i=2;;i++){ if(judge(i)){ count++; } if(count==100002){ System.out.println(i); break; } } scan.close(); } public static boolean judge(int n){ for(int i=2;i<=(int)Math.sqrt(n);i++){ if(n%i==0){ return false; } } return true; } }
第几个幸运数字
【题目描述】
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
这道题用除法来做的话会超时,所以需要用逆向思维Math.pow方法减少运算次数
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { int count = 0; Long l = 59084709587505L; for (long i = 0; Math.pow(3, i) <= l; i++) { for (int j = 0; Math.pow(5, j) <= l; j++) { for (int j2 = 0; Math.pow(5, j2) <= l; j2++) { if (Math.pow(3, i)*Math.pow(5, j)*Math.pow(7, j2) <= l) { count++; } } } } //第一次全0是没有意义的,要减去 System.out.println(count-1); } }
次数差
【题目描述】
x 星球有 26 只球队,分别用 a ~ z 的 26 个字母代表。他们总是不停地比赛。
在某一赛段,哪个球队获胜了,就记录下代表它的字母,这样就形成一个长长的串。
国王总是询问:获胜次数最多的和获胜次数最少的有多大差距?(当然,他不关心那些一次也没获胜的,认为他们在怠工罢了)
输入描述
输入,一个串,表示球队获胜情况(保证串的长度 < 1000)。
输出描述
要求输出一个数字,表示出现次数最多的字母比出现次数最少的字母多了多少次。
输入输出样例
示例
输入
abaabcaa
输出
4
运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
【分析与解答】
【Java语言实现】
import java.util.Scanner; import java.util.*; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... String s=scan.next(); int arr[]=new int[26]; for (int i = 0; i <s.length(); i++) { arr[s.charAt(i)-'a']++; } int min = arr[0],max = 0; for (int i = 0; i < arr.length; i++) { if (arr[i]!=0) { min = Math.min(arr[i], min); max = Math.max(arr[i], max); } } System.out.println(max-min); scan.close(); } }
回家路费
【题目描述】
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int day=0; int sum=0; int coin=1;; while(sum<108){ sum+=coin; day++; coin+=2; } System.out.println(day); scan.close(); } }
乌托邦树
【题目描述】
题目描述
实现一个算法得到乌托邦树的高度。介绍如下:
乌托邦树每年经历 2 个生长周期。每年春天,它的高度都会翻倍。每年夏天,它的高度都会增加 1 米。
对于一颗在春天开始时种下的高 1 米的树,问经过指定周期后,树的高度为多少。
输入描述
输出描述
输出一个数字,为经过指定周期后树的高度。
输入输出样例
示例
输入
3
输出
6
运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int num=scan.nextInt(); long start=1; for(int i=0;i<num;i++){ if(i%2==0){ start=start*2; }else{ start++; } } System.out.println(start); scan.close(); } }
大写
【题目描述】
给定一个只包含大写字母和小写字母的字符串,请将其中所有的小写字母转换成大写字母后将字符串输出。
输入描述
输入一行包含一个字符串。
输出描述
输出转换成大写后的字符串。
输入输出样例
示例
输入
LanQiao
输出
LANQIAO
评测用例规模与约定
对于所有评测用例,字符串的长度不超过 100。
运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... System.out.println(scan.nextLine().toUpperCase()); scan.close(); } }
高精度加法
【题目描述】
题目描述
给定两个整数 a和 b,请你求出这两个整数的和。
输入描述
输入两个正整数 a,b,a和 b都不超过 100位。
输出描述
输出 a+b。
输入输出样例
示例
输入
1234567890123456789 9876543210987654321
输出
11111111101111111110
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; import java.math.BigInteger; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... String a = scan.nextLine(); String b = scan.nextLine(); BigInteger anum=new BigInteger(a); BigInteger bnum=new BigInteger(b); System.out.println(anum.add(bnum)); scan.close(); } }
天数
【题目描述】
题目描述
输入一个月份,请输出 2021 年这个月有多少天。
输入描述
输入一行包含一个整数,表示月份。
输出描述
输出一个整数,这个月的天数。
输入输出样例
示例 1
输入
8
输出
31
示例 2
输入
2
输出
28
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int num=scan.nextInt(); int[]res={31,28,31,30,31,30,31,31,30,31,30,31}; System.out.println(res[num-1]); scan.close(); } }
阶乘计算
【题目描述】
题目描述
给定一个正整数 n,求出 n!的值。
输入描述
输入一个正整数 n,n<=1000。
输出描述
输出 n! 。
输入输出样例
示例
输入
10
输出
3628800
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; import java.math.*; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int num=scan.nextInt(); if(num==0){ System.out.println(1); return; } BigInteger sum=BigInteger.ONE; for(int i=1;i<=num;i++){ sum=sum.multiply(new BigInteger(i+"")); } System.out.println(sum); scan.close(); } }
ASC
【题目描述】
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
已知大写字母 A 的 ASCII 码为 65,请问大写字母 L 的 ASCII 码是多少?
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... System.out.println((int)('L')); scan.close(); } }
距离和
【题目描述】
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int sum=0; String a="LANQIAO"; for(int i=0;i<a.length();i++){ for(int j=i+1;j<a.length();j++){ sum=sum+Math.abs(((int)(a.charAt(j)))-((int)(a.charAt(i)))); } } System.out.println(sum); scan.close(); } }
数的分解
【题目描述】
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 import java.util.Scanner; //1:无需package //2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); // 在此输入您的代码... int num = 2019; int result = 0; for (int i = 1; i < num; i++) { for (int j = i + 1; j < num; j++) { int k =num-i-j; String si = i + ""; String sj = j + ""; String sk = k + ""; boolean a = !si.contains("2") && !si.contains("4"); boolean b = !sj.contains("2") && !sj.contains("4"); boolean c = !sk.contains("2") && !sk.contains("4"); if (k>i&&k>j&& a && b && c) { result++; } } } System.out.println(result); scan.close(); } }
三角形面积
【题目描述】
输入输出样例
示例 1
输入
5 6
输出
15
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; //1:无需package //2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int l = scan.nextInt(); int h = scan.nextInt(); int tem = l * h; if( (tem & 1) == 0){ System.out.println(tem/2); }else{ System.out.println(String.format("%.1f",tem/2.0)); } scan.close(); } }
有奖猜谜
【题目描述】
【分析与解答】
【Java语言实现】
import java.util.Scanner; //1:无需package //2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int sum=777; //在此输入您的代码... String res="vxvxvxvxvxvxvvx"; for(int i =0;i<res.length();i++) { char temp= res.charAt(i); if(temp=='v') { sum=sum*2; }else { sum=sum-555; } } System.out.println(sum); scan.close(); } }
生日蜡烛
【题目描述】
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { int sum = 0; for (int i = 3; i < 100; i++) { for (int j = i; j < 100; j++) { sum +=j; if(sum == 236) { System.out.println(i); } } //置0,让sum重新累加,防止sum的数据错误。 sum = 0; } } }
猜年龄
【题目描述】
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... for(int i=10;i<=99;i++){ if(i*i*i>=1000&&i*i*i*i>=100000){ String res=i*i*i+""+i*i*i*i; if(res.length()==10&&res.contains("0")&&res.contains("1")&&res.contains("2")&&res.contains("3")&&res.contains("4")&&res.contains("5")&&res.contains("6")&&res.contains("7")&&res.contains("8")&&res.contains("9")){ System.out.println(i); } } } scan.close(); } }
猜灯谜
【题目描述】
【分析与解答】
【Java语言实现】
import java.util.Scanner; //1:无需package //2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); // 在此输入您的代码... for (int qing = 1; qing <= 9; qing++) { for (int cai = 0; cai <= 9; cai++) { for (int mi = 0; mi <= 9; mi++) { for (int bian = 0; bian <= 9; bian++) { for (int shang = 0; shang <= 9; shang++) { for (int deng = 0; deng <= 9; deng++) { if((qing*100+cai*10+mi)*(qing*100+cai*10+mi)==100000*qing+10000*bian+shang*1000+deng*100+bian*10+cai) { System.out.println(qing+""+cai+""+mi); } } } } } } } scan.close(); } }
生成回文数
【题目描述】
【分析与解答】
【Java语言实现】
import java.math.BigInteger; import java.util.Scanner; //1:无需package //2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int num=0; for(int i=0;i<=200;i++){ String sum=i+""; while(!judge(sum)){ sum=rever(sum).toString(); num++; if(num>1000){ System.out.println(i); break; } } num=0; } scan.close(); } public static BigInteger rever(String num1){ StringBuffer temp=new StringBuffer(num1); String num2=temp.reverse().toString(); BigInteger res=new BigInteger(num1).add(new BigInteger(num2)); return res; } public static boolean judge(String num){ StringBuffer num1=new StringBuffer(num); String num2=num1.reverse().toString(); return num2.equals(num); } }
排列字母
【题目描述】
【分析与解答】
【Java语言实现】
import java.util.Arrays; import java.util.Scanner; //1:无需package //2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... char temp[]=scan.nextLine().toCharArray(); Arrays.sort(temp); String res=""; for(int i=0;i<temp.length;i++) { res+=temp[i]; } System.out.println(res); scan.close(); } }
星期计算
【题目描述】
【分析与解答】
【Java语言实现】
import java.math.BigInteger; import java.util.Arrays; import java.util.Scanner; //1:无需package //2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... BigInteger a=new BigInteger("20").pow(22).mod(new BigInteger("7")); System.out.println(Integer.parseInt(a.toString())+6); scan.close(); } }
纸张尺寸
【题目描述】
问题描述
在 ISO 国际标准中定义了 A0 纸张的大小为 1189mm \times× 841mm, 将 A0 纸 沿长边对折后为 A1 纸, 大小为 841mm \times× 594mm, 在对折的过程中长度直接取 下整 (实际裁剪时可能有损耗)。将 A1 纸沿长边对折后为 A2 纸, 依此类推。
输入纸张的名称, 请输出纸张的大小。
输入格式
输入一行包含一个字符串表示纸张的名称, 该名称一定是 A0、A1、A2、 A3、A4、A5、A6、A7、A8、A9 之一。
输出格式
输出两行,每行包含一个整数,依次表示长边和短边的长度。
样例输入1
A0
样例输出1
1189 841
样例输入 2
A1
样例输出 2
841 594
运行限制
- 最大运行时间:1s
- 最大运行内存: 512M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String a = scan.next(); char b = a.charAt(1); int c = Integer.parseInt(String.valueOf(b)); int left = 1189; int right = 841; for (int i = 1; i <= c; i++) { if(left >= right){ if(left %2 ==0){ left = left / 2; }else{ left = (left-1) /2; } }else{ if(right %2 ==0){ right = right / 2; }else{ right = (right-1) /2; } } } if(left > right){ System.out.println(left); System.out.println(right); }else{ System.out.println(right); System.out.println(left); } } }
平行四边形
【题目描述】
题目描述
给定一个平行四边形的底边长度 l和高度 h,求平行四边形的面积。
输入描述
输出描述
输出一个数,表示平行四边形的面积。如果面积为整数,请直接输出这个整数,不带小数点。如果面积不是整数,请四舍五入保留正好一位小数。
输入输出样例
示例 1
输入
5 6
输出
30
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String a = scan.next(); char b = a.charAt(1); int c = Integer.parseInt(String.valueOf(b)); int left = 1189; int right = 841; for (int i = 1; i <= c; i++) { if(left >= right){ if(left %2 ==0){ left = left / 2; }else{ left = (left-1) /2; } }else{ if(right %2 ==0){ right = right / 2; }else{ right = (right-1) /2; } } } if(left > right){ System.out.println(left); System.out.println(right); }else{ System.out.println(right); System.out.println(left); } } }
倍数
【题目描述】
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
请问在 1 到 2020 中,有多少个数既是 4的整数倍,又是 6 的整数倍。
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int num=0; for(int i=1;i<=2020;i++){ if(i%4==0&&i%6==0){ num++; } } System.out.println(num); scan.close(); } }
纯质数
【题目描述】
【分析与解答】
【Java语言实现】
import java.util.Scanner; import java.util.*; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { //题目的意思 每个数都是2,3,5,7 public static boolean isPrimeNumber(int n){ //判断是否为质数 if(n==1||n==0) return false; for(int i=2;i<=Math.sqrt(n);i++){ if(n%i==0) return false; } return true; } public static void main(String[] args) { int sum=0; for(int i=1;i<=20210605;i++){ int j=i; while(j!=0){//筛选条件 取出每位上的数看是否为质数 if(isPrimeNumber(j%10)==false) break; j=j/10; }//判断是否为质数 j==0 是防止break中跳出的数 if(j==0&&isPrimeNumber(i)) sum++; } System.out.println(sum); } }
数字位数
【题目描述】
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... String sum=""; for(int i=1;i<=2020;i++){ sum+=i; } System.out.println(sum.length()); scan.close(); } }
合法日期
【题目描述】
题目描述
小蓝正在上小学,老师要求同学们在暑假每天记日记。可是小蓝整个暑假都在玩,直到最后一天才想起要记日记。于是小蓝赶紧编了一些日记交给老师。
没想到,日记很快就被老师发现了问题,原来小蓝记完 8 月 31 日的日记,竟又记了 8 月 32 日和 8 月 33 日的日记。这显然是有问题的,因为根本没有 8 月 32 日和 8 月 33 日。
给定一个月份和一个日期,请问 2021 年有没有这一天。
输入描述
输出描述
如果2021年有 m 月 d日,输入 yes,否则输出 no。
输入输出样例
示例 1
输入
8 32
输出
no
示例 2
输入
2 28
输出
yes
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int m=sc.nextInt(); int d=sc.nextInt(); String ans="yes"; if(m>12 || d>31) { ans="no"; }else if(m==2 && d>28) { ans="no"; }else if((m==4 ||m==6||m==9||m==11) && d>30) { ans="no"; } System.out.println(ans); } }
合数个数
【题目描述】
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int num=0; for(int i=4;i<=2020;i++){ for(int j=2;j<i;j++){ if(i%j==0){ num++; break; } } } System.out.println(num); scan.close(); } }
数字9
【题目描述】
【分析与解答】
【Java语言实现】
import java.util.Scanner; //1:无需package //2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int count=0; for (int i = 1; i <= 2019; i++) { if ((i+"").contains("9")){ count++; } } System.out.println(count); scan.close(); } }
居中输出
【题目描述】
题目描述
输入一个整数,请在整数前后补上等号,使得总的长度为 10,而且整数在正中间。
输入描述
输入一行包含一个整数 n。
输出描述
输出补上等号后的表示。如果没办法使整数在正中间,在前面多补一个等号。
输入输出样例
示例
输入
2021
输出
===2021===
示例2
输入
2021101
输出
==2021101=
评测用例规模与约定
对于所有评测用例,给定的数是不超过 8 位的非负整数。
运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int num=scan.nextInt(); String temp=num+""; while(temp.length()<=8){ temp="="+temp; temp=temp+"="; } if(temp.length()==9){ temp="="+temp; } System.out.println(temp); scan.close(); } }
约数
【题目描述】
题目描述
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int num=0; for(int i=1;i<=2020;i++){ if(2020%i==0){ num++; } } System.out.println(num); scan.close(); } }
公约数
【题目描述】
题目描述
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int num=0; for(int i=1;i<=2020;i++){ if(2020%i==0&&3030%i==0){ num++; } } System.out.println(num); scan.close(); } }
约数个数
【题目描述】
题目描述
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int num=0; for(int i=1;i<=1200000;i++){ if(1200000%i==0){ num++; } } System.out.println(num); scan.close(); } }
含2天数
【题目描述】
题目描述
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Scanner; //1:无需package //2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int num=0; Calendar cale = Calendar.getInstance(); cale.set(1900, 0, 1); Date now=cale.getTime(); SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyyMMdd"); String transformDate=simpleDateFormat.format(now); while(!transformDate.equals("99991231")){ now=cale.getTime(); simpleDateFormat=new SimpleDateFormat("yyyyMMdd"); transformDate=simpleDateFormat.format(now); if(transformDate.contains("2")) { num++; } cale.add(5, 1); } System.out.println(num); scan.close(); } }
年龄问题
【题目描述】
题目描述
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... for(int i=0;i<=99;i++){ int wife=i; int husband=(int)(1.5*wife); if((husband-20)==2*(wife-20)&&(1.5*wife)==(int)(1.5*wife)){ System.out.println(wife); } } scan.close(); } }
反倍数
【题目描述】
示例
输入
30 2 3 6
输出
10
样例说明:
以下这些数满足要求:1, 5, 7, 11, 13, 17, 19, 23, 25, 29。
运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int num=scan.nextInt(); int a=scan.nextInt(); int b=scan.nextInt(); int c=scan.nextInt(); int sum=0; for(int i=1;i<=num;i++){ if(i%a!=0&&i%b!=0&&i%c!=0){ sum++; } } System.out.println(sum); scan.close(); } }
星期一
【题目描述】
【分析与解答】
【Java语言实现】
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Scanner; //1:无需package //2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int num=0; Calendar cale = Calendar.getInstance(); cale.set(1901, 0, 1); Date now=cale.getTime(); Calendar cale1 = Calendar.getInstance(); cale1.set(2000, 11, 31); Date now1=cale1.getTime(); long difference = (now1.getTime()-now.getTime())/86400000; System.out.println(difference/7); scan.close(); } }
星期几
【题目描述】
【分析与解答】
【Java语言实现】
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Scanner; //1:无需package //2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); // 在此输入您的代码... int num = 0; Calendar cale = Calendar.getInstance(); for (int i = 1949; i <= 2012; i++) { cale.set(i, 9, 1); if (cale.get(Calendar.DAY_OF_WEEK) == 1) { num++; } } System.out.println(num); scan.close(); } }
立方变自身
【题目描述】
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
观察下面的现象,某个数字的立方,按位累加仍然等于自身。
1^3 = 1 8^3 = 512 5+1+2=8 17^3 = 4913 4+9+1+3=17 ...
请你计算包括 1,8,171,8,17 在内,符合这个性质的正整数一共有多少个?
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int num=0; for(int i=1;i<=999999;i++) { if(i==add(i*i*i+"")) { num++; } } System.out.println(num); scan.close(); } public static int add(String num){ char temp[]=num.toCharArray(); int sum=0; for(int i=0;i<temp.length;i++) { sum=sum+temp[i]-'0'; } return sum; } }
时间显示
【题目描述】
题目描述
输入描述
输入一行包含一个整数,表示时间。
输出描述
输入输出样例
示例 1
输入
46800999
输出
13:00:00
示例 2
输入
1618708103123
输出
01:08:23
评测用例规模与约定
对于所有评测用例,给定的时间为不超过 10^{18}1018 的正整数。
运行限制
- 最大运行时间:1s
- 最大运行内存: 512M
【分析与解答】
【Java语言实现】
import java.security.Timestamp; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); String time1 = sdf.format(new Date(scan.nextLong())); System.out.println(time1); scan.close(); } }
最小公倍数
【题目描述】
本题为代码补全填空题,请将题目中给出的源代码补全,并复制到右侧代码框中,选择对应的编译语言(C/Java)后进行提交。若题目中给出的源代码语言不唯一,则只需选择其一进行补全提交即可。复制后需将源代码中填空部分的下划线删掉,填上你的答案。提交后若未能通过,除考虑填空部分出错外,还需注意是否因在复制后有改动非填空部分产生错误。
求两个数字的最小公倍数是很常见的运算。比如,3 和 5 的最小公倍是 15。6 和 8 的最小公倍数是 24。
下面的代码对给定的两个正整数求它的最小公倍数。请填写缺少的代码,使程序尽量高效地运行。
源代码
C
#include <stdio.h> #include <stdlib.h> int f(int a, int b) { int i; for(i=a;;______) { if(i%b==0) return i; } } int main(int argc, char* argv[]) { printf("%d\n", f(12,15)); return 0; }
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
【C语言实现】
#include <stdio.h> #include <stdlib.h> int f(int a, int b) { int i; for(i=a;;i=i+a) { if(i%b==0) return i; } } int main(int argc, char* argv[]) { printf("%d\n", f(12,15)); return 0; }
饮料换购
【题目描述】
题目描述
乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊 C 型饮料,凭 3 个瓶盖可以再换一瓶 C 型饮料,并且可以一直循环下去(但不允许暂借或赊账)。
请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的 n 瓶饮料,最后他一共能喝到多少瓶饮料。
输入描述
输出描述
输出一个整数,表示实际得到的饮料数
输入输出样例
示例
输入
100
输出
149
运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int drink=scan.nextInt(); int bottle=drink; while(bottle>=3){ drink+=bottle/3; bottle=bottle/3+bottle%3; } System.out.println(drink); scan.close(); } }
算式900
【题目描述】
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小明的作业本上有道思考题:
看下面的算式:
(□□□□-□□□□)*□□=900
其中的小方块代表 00 ~ 99 的数字,这 1010 个方块刚好包含了 00 ~ 99 中的所有数字。 注意:00 不能作为某个数字的首位。
小明经过几天的努力,终于做出了答案!如下:
(5012-4987)*36=900
用计算机搜索后,发现还有另外一个解,本题的任务就是:请你算出这另外的一个解。
注意:输出格式需要与示例严格一致; 括号及运算符号不要用中文输入法; 整个算式中不能包含空格。
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Arrays; import java.util.Scanner; //1:无需package //2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { for(int i=1000;i<=9999;i++) { for(int j=1000;j<=9000;j++) { for(int k=10;k<=99;k++) { if((i-j)*k==900) { String str=""+i+j+k; char[] a = str.toCharArray(); Arrays.sort(a); String s = String.valueOf(a); if(s.equals("0123456789")) { System.out.println(i); System.out.println(j); System.out.println(k); } } } } } } }
算式问题
【题目描述】
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 import java.util.Arrays; public class Main { public static void main(String[] args) { int sum=0; for (int i = 100; i <1000; i++) { for (int j = 100; j < 1000; j++) { int k=i+j; String a=""+i+j+k; char [] b=a.toCharArray(); Arrays.sort(b); String s=String.valueOf(b); if (s.equals("123456789")&&i+j==k) { sum++; } } } System.out.println(sum); } }
求值
【题目描述】
【分析与解答】
【Java语言实现】
import java.util.Scanner; //1:无需package //2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... System.out.println(45360); scan.close(); } }
啤酒和饮料
【题目描述】
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { for(int j = 2; j<43; j++){ for(int i=1; i<j; i++){ if(1.9*j+2.3*i==82.3){ System.out.println(i); return; } } } } }
序列个数
【题目描述】
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
请问有多少个序列满足下面的条件:
- 序列的长度为 5。
- 序列中的每个数都是 1 到 10 之间的整数。
- 序列中后面的数大于等于前面的数。
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; //1:无需package //2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); // 在此输入您的代码... int num = 0; for (int i = 1; i <= 10; i++) { for (int j = i; j <= 10; j++) { for (int k = j; k <= 10; k++) { for (int l = k; l <= 10; l++) { for (int m = l; m <= 10; m++) { num++; } } } } } System.out.println(num); scan.close(); } }
组队
【题目描述】
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
作为篮球队教练,你需要从以下名单中选出 1号位至 5 号位各一名球员,组成球队的首发阵容。
每位球员担任 1 号位至 5 号位时的评分如下表所示。请你计算首发阵容 1号位至 5 号位的评分之和最大可能是多少?
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; //1:无需package //2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); // 在此输入您的代码... int max = 0; int[] one = { 97, 92, 0, 0, 89, 82, 0, 0, 0, 95, 0, 0, 94, 0, 0, 0, 98, 93, 0, 0 }; int[] two = { 90, 85, 0, 0, 83, 86, 0, 97, 0, 99, 0, 0, 91, 83, 0, 0, 83, 87, 0, 99 }; int[] three = { 0, 96, 0, 0, 97, 0, 0, 96, 89, 0, 96, 0, 0, 87, 98, 0, 99, 92, 0, 96 }; int[] four = { 0, 0, 0, 80, 0, 0, 87, 0, 0, 0, 97, 93, 0, 0, 97, 93, 98, 96, 89, 95 }; int[] five = { 0, 0, 93, 86, 0, 0, 90, 0, 0, 0, 0, 98, 0, 0, 98, 86, 81, 98, 92, 81 }; for (int i = 0; i < 20; i++) { for (int j = 0; j < 20; j++) { for (int k = 0; k < 20; k++) { for (int l = 0; l < 20; l++) { for (int m = 0; m < 20; m++) { if ((i != j) && (i != k) && (i != l) && (i != m) && (j != k) && (j != l) && (j != m) && (k != l) && (k != m) && (l != m)) { if ((one[i] + two[j] + three[k] + four[l] + five[m]) > max) { max = one[i] + two[j] + three[k] + four[l] + five[m]; } } } } } } } System.out.println(max); scan.close(); } }
数位和
【题目描述】
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int sum=0; for(int i=1;i<=1000;i++){ sum=sum+num(i); } System.out.println(sum); scan.close(); } public static int num(int num){ int sum=0; while(num>0){ sum=sum+num%10; num/=10; } return sum; } }
乘积尾零
【题目描述】
【分析与解答】
【Java语言实现】
import java.math.BigInteger; import java.util.Scanner; //1:无需package //2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... BigInteger a=BigInteger.ONE; int num=0; while(num<100) { a=a.multiply(new BigInteger(scan.nextInt()+"")); num++; } int num1=0; while((a.mod(BigInteger.TEN)).compareTo(BigInteger.ZERO)==0) { a=a.divide(BigInteger.TEN); num1++; } System.out.println(num1); scan.close(); } }
最小公倍数
【题目描述】
题目描述
为什么 1 小时有 60 分钟,而不是 100 分钟呢?这是历史上的习惯导致。
但也并非纯粹的偶然:60 是个优秀的数字,它的因子比较多。
事实上,它是 1 至 6 的每个数字的倍数。即 1,2,3,4,5,6 都是可以除尽 60。
我们希望寻找到能除尽 1 至 n的的每个数字的最小整数。
不要小看这个数字,它可能十分大,比如 n= 100, 则该数为:
69720375229712477164533808935312303556800
输入描述
输入一个数字 N(N<100)。
输出描述
输出出 1 ~ n的最小公倍数。
输入输出样例
示例
输入
6
输出
60
运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
【分析与解答】
【Java语言实现】
import java.math.BigInteger; import java.util.Scanner; //1:无需package //2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... BigInteger n = scan.nextBigInteger(); BigInteger m = n; BigInteger s = new BigInteger("1"); for(BigInteger i = new BigInteger("2");i.max(m).equals(m)||i.equals(m);i = i.add(new BigInteger("1"))){ BigInteger t = s; s = s.multiply(i); s = s.divide(t.gcd(i)); } System.out.println(s.toString()); scan.close(); scan.close(); } }
年龄巧合
【题目描述】
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小明和他的表弟一起去看电影,有人问他们的年龄。小明说:今年是我们的幸运年啊。我出生年份的四位数字加起来刚好是我的年龄。表弟的也是如此。已知今年是 2014 年,并且,小明说的年龄指的是周岁。
请推断并填写出小明的出生年份。
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; //1:无需package //2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... for(int i=1900;i<=2014;i++){ if(cal(i)==2014-i){ System.out.println(i); break; } } scan.close(); } public static int cal(int num){ int sum=0; while(num>0){ sum+=num%10; num/=10; } return sum; } }
猜字母
【题目描述】
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { String s = ""; for(int i=1;i<=106;i++) { s = s+ "abcdefghijklmnopqrs"; } String t = ""; while(s.length()!=1) { t = ""; for(int i=1;i<s.length();i=i+2) { t = t + s.charAt(i); } s = t; } System.out.println(s); } }
顺子日期
【题目描述】
问题描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小明特别喜欢顺子。顺子指的就是连续的三个数字:123、456 等。顺子日期指的就是在日期的 yyyymmdd 表示法中,存在任意连续的三位数是一个顺子的日期。例如 20220123 就是一个顺子日期,因为它出现了一个顺子:123; 而 20221023 则不是一个顺子日期,它一个顺子也没有。小明想知道在整个 2022 年份中,一共有多少个顺子日期?
运行限制
- 最大运行时间:1s
- 最大运行内存: 512M
【分析与解答】
【Java语言实现】
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Scanner; //1:无需package //2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int num=0; Calendar calend=Calendar.getInstance(); calend.set(Calendar.YEAR, 2023); calend.set(Calendar.MONTH, 0); calend.set(Calendar.DAY_OF_MONTH, 1); Calendar calstart=Calendar.getInstance(); calstart.set(Calendar.YEAR, 2022); calstart.set(Calendar.MONTH, 0); calstart.set(Calendar.DAY_OF_MONTH, 1); while(calstart.before(calend)) { Date date=calstart.getTime(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); String dateString=sdf.format(date); for(int i=0;i<dateString.length()-2;i++) { if(judge(dateString.substring(i,i+3))) { num++; break; } } calstart.add(Calendar.DAY_OF_MONTH,1); } System.out.println(num); scan.close(); } public static boolean judge(String s){ int num1=s.charAt(2)-s.charAt(1); int num2=s.charAt(1)-s.charAt(0); return (num1==1&&num2==1); } }
最大公约数
【题目描述】
题目描述
给定两个正整数 A,B,求它们的最大公约数。
输入描述
输出描述
输出共 T行,每行包含一个整数,表示答案。
输入输出样例
示例 1
输入
5 2 4 3 7 5 10 6 8 7 9
输出
2 1 5 2 1
运行限制
- 最大运行时间:2s
- 最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int n= scan.nextInt(); for(int i=0;i<n;i++){ int a=scan.nextInt(); int b=scan.nextInt(); System.out.println(gcd(a,b)); } scan.close(); } //求两个最大的公约数 差不多成为一个公用的模板了 public static int gcd(int a,int b){ if(b==0)return a; return gcd(b,a%b); } }
三羊献瑞
【题目描述】
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
观察下面的加法算式:
祥 瑞 生 辉 + 三 羊 献 瑞 ------------------- 三 羊 生 瑞 气
其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你输出“三羊献瑞”所代表的 44 位数字(答案唯一)。
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { for (int a = 1; a < 10; a++) { for (int b = 0; b < 10; b++) { if (a != b) for (int c = 0; c < 10; c++) { if (a != c && b != c) for (int d = 0; d < 10; d++) { if (a != d && b != d && c != d) for (int e = 1; e < 10; e++) { if (a != e && b != e && c != e && d != e) for (int f = 0; f < 9; f++) { if (a != f && b != f && c != f && d != f && e != f) for (int g = 0; g < 10; g++) { if (a != g && b != g && c != g && d != g && e != g && f != g) for (int h = 0; h < 10; h++) { if (a != h && b != h && c != h && d != h && e != h && f != h) { int num1 = a * 1000 + b * 100 + c * 10 + d; int num2 = e * 1000 + f * 100 + g * 10 + b; int num3 = e * 10000 + f * 1000 + c * 100 + b * 10 + h; if (num1 + num2 == num3) System.out.println(num2); } } } } } } } } } } }
Fizz Buzz 经典问题
【题目描述】
给定一个整数 NN,从 1 到 NN 按照下面的规则返回每个数:
- 如果这个数被 3 整除,返回 Fizz。
- 如果这个数被 5 整除,返回 Buzz
- 如果这个数能同时被 3 和 5 整除,返回 FizzBuzz。
- 如果这个数既不能被 3 也不能被 5 整除,返回这个数字。
输入描述
输出描述
输出一行,如题干所述。
输入输出样例
示例
输入
15
输出
FizzBuzz
运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int n=scan.nextInt(); if(n%3==0){ if(n%5==0) System.out.print("FizzBuzz"); else System.out.print("Fizz"); }else{ if(n%5==0) System.out.print("Buzz"); else System.out.print(n); } scan.close(); } }
神奇六位数
【题目描述】
【分析与解答】
【Java语言实现】
import java.util.Arrays; import java.util.Scanner; //1:无需package //2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... for(int i=100000;i<=166666;i++) { String a0=sort((i)); String a1=sort((2*i)); String a2=sort((3*i)); String a3=sort((4*i)); String a4=sort((5*i)); String a5=sort((6*i)); if((a0+a1+a2+a3+a4+a5).equals(a0+a0+a0+a0+a0+a0)) { System.out.println(i); } } scan.close(); } public static String sort(int NUM){ String res=NUM+""; if(res.length()>6) { return "----"; } char temp[]=res.toCharArray(); Arrays.sort(temp); String result=""; for(int i:temp) {; result=result+(i-'0'); } return result; } }
求和
【题目描述】
问题描述
输入格式
输出格式
样例输入
4 1 3 6 9
样例输出
117
评测用例规模与约定
运行限制
- 最大运行时间:1s
- 最大运行内存: 512M
【分析与解答】
考察了数学知识,重点是将数学语言转换成编程语言
假如有5个数:a0,a1,a2,a3,a4
求解:
sum0 = a0 + a1 + a2 + a3 + a4
用乘法分配律进行分组求和
sum1 = ( a1 + a2 + a3 + a4 ) * a0 = (sum0 - a0 ) * a0
sum2 = ( a2 + a3 + a4 ) * a1 = (sum0 - a0 - a1 ) * a1
sum3 = ( a3 + a4 ) * a2 = (sum0 - a0 - a1 - a2 ) * a2
sum4 = ( a4 ) * a3 = (sum0 - a0 - a1 - a2 - a3 ) * a3
res = sum1 + sum2 + sum3 + sum4
可以看到非常的有规律
我们求出数组的和(sum)后,在遍历求和时,依次减去当前索引所指的数,再与这个被减的数相乘
用常规方法,双重for循环遍历数组,时间复杂度为 O(n2)。显然,只能拿30%的分
如果运用些数学知识,只用一个for循环即可完成求解,时间复杂度为 O(n)
【Java语言实现】
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); //定义一个数组 Long [] arr = new Long[n]; Long sum = 0l; //对数组赋值 for( int i = 0 ; i < arr.length ; i++ ){ arr[i] = sc.nextLong(); sum += arr[i]; //对数组求和 } //结果 Long res = 0l; for( int i = 0 ; i < arr.length - 1 ; i++ ){ //依次减去当前索引所指的数 sum -= arr[i]; //累加求和 res += sum * arr[i]; } System.out.println(res); } }
武功秘籍
【题目描述】
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小明到 X 山洞探险,捡到一本有破损的武功秘籍(2000 多页!当然是伪造的)。他注意到:书的第 10页和第 11 页在同一张纸上,但第 11 页和第 12页不在同一张纸上。
小明只想练习该书的第 81页到第 92页的武功,又不想带着整本书。请问他至少要撕下多少张纸带走?
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
考察了数学知识,重点是将数学语言转换成编程语言
假如有5个数:a0,a1,a2,a3,a4
求解:
sum0 = a0 + a1 + a2 + a3 + a4
用乘法分配律进行分组求和
sum1 = ( a1 + a2 + a3 + a4 ) * a0 = (sum0 - a0 ) * a0
sum2 = ( a2 + a3 + a4 ) * a1 = (sum0 - a0 - a1 ) * a1
sum3 = ( a3 + a4 ) * a2 = (sum0 - a0 - a1 - a2 ) * a2
sum4 = ( a4 ) * a3 = (sum0 - a0 - a1 - a2 - a3 ) * a3
res = sum1 + sum2 + sum3 + sum4
可以看到非常的有规律
我们求出数组的和(sum)后,在遍历求和时,依次减去当前索引所指的数,再与这个被减的数相乘
用常规方法,双重for循环遍历数组,时间复杂度为 O(n2)。显然,只能拿30%的分
如果运用些数学知识,只用一个for循环即可完成求解,时间复杂度为 O(n)
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... //81 //82-83 //84-85 //86-87 //88-89 //90-91 System.out.println(7); scan.close(); } }
方程整数解
【题目描述】
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... System.out.println(10); scan.close(); } }
三角形的面积
【题目描述】
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
已知三角形三个顶点在直角坐标系下的坐标分别为:
```txt (2.3, 2.5) (6.4, 3.1) (5.1, 7.2)
```txt 求该三角形的面积。
注意,要提交的是一个小数形式表示的浮点数。 要求精确到小数后 3 位,如不足 3 位,需要补零。
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
【分析与解答】
【Java语言实现】
import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { double a=Math.sqrt((6.4-2.3)*(6.4-2.3)+(3.1-2.5)*(3.1-2.5)); double b=Math.sqrt((6.4-5.1)*(6.4-5.1)+(3.1-7.2)*(3.1-7.2)); double c=Math.sqrt((5.1-2.3)*(5.1-2.3)+(7.2-2.5)*(7.2-2.5)); double p=(a+b+c)/2; System.out.println(String.format("%.3f", Math.sqrt(p*(p-a)*(p-b)*(p-c)))); } }
公约数公倍数
【题目描述】
题目描述
本题为代码补全填空题,请将题目中给出的源代码补全,并复制到右侧代码框中,选择对应的编译语言(C/Java)后进行提交。若题目中给出的源代码语言不唯一,则只需选择其一进行补全提交即可。复制后需将源代码中填空部分的下划线删掉,填上你的答案。提交后若未能通过,除考虑填空部分出错外,还需注意是否因在复制后有改动非填空部分产生错误。
我们经常会用到求两个整数的最大公约数和最小公倍数的功能。
下面的程序给出了一种算法。
函数 myfunc 接受两个正整数 a,b
经过运算后打印出 它们的最大公约数和最小公倍数。
【分析与解答】
【C语言实现】
#include <stdio.h> void swap(int *a,int *b) { int temp; temp=*a; *a=*b; *b=temp; } void myfunc(int a, int b) { int m,n,r; if(a<b) swap(&a,&b); m=a;n=b;r=a%b; while(r!=0) { a=b;b=r; r=a%b; } printf("%d\n",b); // 最大公约数 printf("%d\n",m*n/b); // 最小公倍数 【代码填写部分】 } int main() { myfunc(30,12); myfunc(12*7,30); return 0; }
大衍数列
【题目描述】
题目描述
本题为代码补全填空题,请将题目中给出的源代码补全,并复制到右侧代码框中,选择对应的编译语言(C/Java)后进行提交。若题目中给出的源代码语言不唯一,则只需选择其一进行补全提交即可。复制后需将源代码中填空部分的下划线删掉,填上你的答案。提交后若未能通过,除考虑填空部分出错外,还需注意是否因在复制后有改动非填空部分产生错误。
中国古代文献中,曾记载过“大衍数列”, 主要用于解释中国传统文化中的太极衍生原理。
它的前几项是:0、2、4、8、12、18、24、32、40、50 ...
其规律是:对偶数项,是序号平方再除 2,奇数项,是序号平方减 1 再除 2。
以下的代码打印出了大衍数列的前 100 项。
请分析程序流程,填写划线部分缺少的代码。
【分析与解答】
【Java语言实现】
import java.util.*; public class Main { public static void main(String[] args) { //大衍数列,主要用于解释中国传统文化中的太极衍生原理 // 前几项:0、2、4、8、12、18、24、32、40、50 for(int i=1; i<20; i++){ if((i)%2==0) System.out.print(i*i/2+" "); else System.out.print((i*i-1)/2+" "); } System.out.println(); } }
串逐位和
【题目描述】
题目描述
本题为代码补全填空题,请将题目中给出的源代码补全,并复制到右侧代码框中,选择对应的编译语言(C/Java)后进行提交。若题目中给出的源代码语言不唯一,则只需选择其一进行补全提交即可。复制后需将源代码中填空部分的下划线删掉,填上你的答案。提交后若未能通过,除考虑填空部分出错外,还需注意是否因在复制后有改动非填空部分产生错误。
给定一个由数字组成的字符串,我们希望得到它的各个数位的和。 比如:“368” 的诸位和是:17。
这本来很容易,但为了充分发挥计算机多核的优势,小明设计了如下的方案。
你能读懂他的思路吗? 请填写划线部分缺失的代码。
【分析与解答】
【C语言实现】
#include <stdio.h> #include <string.h> int f(const char s[], int begin, int end) { int mid; if(end-begin==1) return s[begin] - '0'; mid = (begin+end)/2; return f(s,begin,mid)+f(s,mid,end); } int main() { char s[] = "82791276526645328666454364634222489763382233"; printf("%d\n",f(s,0,strlen(s))); return 0; }
第一个数字
【题目描述】
本题为代码补全填空题,请将题目中给出的源代码补全,并复制到右侧代码框中,选择对应的编译语言(C/Java)后进行提交。若题目中给出的源代码语言不唯一,则只需选择其一进行补全提交即可。复制后需将源代码中填空部分的下划线删掉,填上你的答案。提交后若未能通过,除考虑填空部分出错外,还需注意是否因在复制后有改动非填空部分产生错误。
以下的静态方法实现了:把串s中第一个出现的数字的值返回。
如果找不到数字,返回-1。
请仔细阅读代码,并填写划线部分缺失的代码。
【分析与解答】
【Java语言实现】
import java.util.*; public class Main { public static int getFirstNum(String s) { if(s==null || s.length()==0) return -1; char c = s.charAt(0); if(c>='0' && c<='9') return c-'0'; // 填空1 return getFirstNum(s.substring(1)); // 填空2 } public static void main(String[] args) { System.out.println(getFirstNum("ac1y5")); System.out.println(getFirstNum("2ac3y5")); System.out.println(getFirstNum("kkkacy3")); System.out.println(getFirstNum("abb")); } }
完全日期
【题目描述】
【分析与解答】
【Java语言实现】
import java.text.SimpleDateFormat; import java.util.*; public class Main { public static int getDate(Date s) { SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); String temp= sdf.format(s).toString(); char num[]=temp.toCharArray(); int sum=0; for(char i :num) { sum=sum+i-'0'; } return sum; } public static void main(String[] args) { int res=0; Calendar cal=Calendar.getInstance(); cal.set(2001, 0, 1); Calendar cale=Calendar.getInstance(); cale.set(2022,0,0 ); while(cal.before(cale)) { int num=(int) Math.sqrt(getDate(cal.getTime())); if(Math.sqrt(getDate(cal.getTime()))==num) { res++; } cal.add(Calendar.DAY_OF_MONTH, 1); } System.out.println(res); } }
寻找3个数的最大乘积
【题目描述】
题目描述
实现一个算法在数组中找到 3 个数字的最大乘积。介绍如下:
- 例如数组 [5, -2, 3, 1, -1, 4] 中 3 个数字的最大乘积为 60。
输入描述
输出描述
输出一行,为 3 个数字的最大乘积。
输入输出样例
示例
输入
6 5 -2 3 1 -1 4
输出
60
运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
【分析与解答】
【Java语言实现】
import java.util.*; import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改 public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int al=scan.nextInt(); int a[]=new int[al]; for(int i=0;i<al;i++) { a[i]=scan.nextInt(); } Arrays.sort(a); int max=0; int length=a.length-1; int num1=a[length]*a[0]*a[1]; int num2=a[length-1]*a[length]*a[0]; int num3=a[length]*a[length-1]*a[length-2]; int res[]={num1,num2,num3}; Arrays.sort(res); System.out.println(res[2]); scan.close(); } }