- 第一题:与2020互质数的个数
- 第二题:Q的ACSII码
- 第三题:二叉树的叶节点
- 第四题:Pierce 序列的长度
- 第五题:2021 列的列名
- 第六题:整数的千位分隔形式
- 第七题:斐波那契数列第N项的奇偶性
- 第八题:最合适的子矩阵的下标
- 第九题:购买物品的最小代价(全组合)
- 第十题:长度为 k 的上升子序列的个数
Tips
没有收藏题目的可以看看题目,我哪个做错了及时指出来啊,谢谢大家了。(我的解题思路超烂)
第一题
问题描述
请问在 1 到 2020 中,有多少个数与 2020 互质,即有多少个数与 2020 的最大公约数为 1。
答案
800
解题思路
可以暴力,从1到2019遍历一下。
2020能被质数 2、5、101整除,遍历从1到2020有多少数是2,5,101的倍数,得到与2020不互为质数的数的个数,为1220,2020 - 1220 = 800。
第二题
问题描述
ASCII 码将每个字符对应到一个数值(编码),用于信息的表示和传输。在 ASCII 码中,英文字母是按从小到大的顺序依次编码的,例如:字母 A 编码是 65, 字母 B 编码是 66,字母 C 编码是 67,请问字母 Q 编码是多少?
答案
81
第三题
问题描述
有一棵二叉树,一个由2021个结点,其中有1000个结点有两个子结点,其他的结点有一个或者0个子结点。
请问,这棵二叉树有多少个叶结点?
答案
1001
解题思路
二叉树叶子结点 等于 有两个子结点的结点数+1。
当二叉树结点数为 2021 时,有 2020 条树枝,有两个子结点的结点数对应两个树枝,有一个子结点的结点数对应一个树枝,那么当有 2021 个结点,有 2020 个树枝,其中有 1000 个结点有两个子结点,就对应 2000 个树枝,还剩 2020-2000 = 20 个树枝留给有一个子结点的结点数,就是 2021 - 1000 - 20 = 1001 个叶子结点。
第四题
问题描述
对于整数 v 和 p,定义 Pierce 序列为:
a[1] = v
a[i] = p % a[i-1]
例如,当 v = 8, p = 21 时,对应的 Pierce 序列为
a[1] = 8
a[2] = 5
a[3] = 1
再往后计算,值变为 0,不在我们考虑的范围内。因此当 v = 8, p = 21 时, Pierce 序列的长度为 3。
当 p 一定时,对于不同的 v 值,Pierce 序列的长度可能不同。当 p = 8 时,若 1<=v<p,最长的 Pierce 序列出现在 v=13时,为(13, 8, 5, 1),长度为 4。
当 p=2021 时,最长的 Pierce 序列出现在 v=1160 时,请问这个序列有多长?
答案
12
第五题
问题描述
在 Excel 中,第 1 列到第 26 列的列名依次为 A 到 Z,从第 27 列开始,列名有两个字母组成,第 27 列到第 702 列的列名依次为 AA 到 ZZ。
之后的列再用 3 个字母、4 个字母表示。
请问,第 2021 列的列名是什么?
答案
BYS
解题思路
题目只说两个字母组成时是从AA到ZZ,没给按什么顺序或规则,是左侧还是右侧的字母优先,但是按照常理说AA下一个应该是AB。
public void method05() {
int a = 26;
int b = a * a;
int dp = 2021 - a - b;
int count = 0;
for(int i = 0; i < 26; i++) {
for(int j = 0; j < 26; j++) {
for(int k = 0; k < 26; k++) {
count++;
if(count == dp) {
char c1 = (char)(i + 'A');
char c2 = (char)(j + 'A');
char c3 = (char)(k + 'A');
StringBuilder sb = new StringBuilder();
sb.append(c1);
sb.append(c2);
sb.append(c3);
System.out.println(sb.toString());
}
}
}
}
}
第六题
问题描述
在书写一个较大的整数时,为了方便看清数位,通常会在数位之间加上逗号来分割数位,具体的,从右向左,每三位分成一段,相邻的段之间加一个逗号。
例如,1234567 写成 1,234,567。
例如,17179869184 写成 17,179,869,184。
给定一个整数,请将这个整数增加分割符后输出。
输入格式
输入一行包含一个整数 v。
输出格式
输出增加分割符后的整数。
样例输入
1234567
样例输出
1,234,567
样例输入
17179869184
样例输出
17,179,869,184
数据规模和约定
对于 50% 的评测用例,0 <= v < 10^9 (10的9次方)。
对于所有评测用例,0 <= v < 10^18 (10的18次方)。
解题思路
public void method06() {
Scanner scanner = new Scanner(System.in);
long n = scanner.nextLong();
StringBuilder sb = new StringBuilder();
if(n == 0) {
System.out.println(sb.append(0).toString());
return;
}
int count = 0;
while(n > 0) {
sb.insert(0,n % 10);
count ++;
if(n >= 10 && count > 0 && count % 3 == 0)
sb.insert(0,',');
n /= 10;
}
System.out.println(sb.toString());
}
第七题
问题描述
斐波那契数列是这样一个数列:它的第一项和第二项都是1,从第三项开始每一项都是前两项的和。