试题A: 整数范围
本题总分:5 分
【问题描述】
用8位二进制(一个字节)来表示一个非负整数,表示的最小值是0,则一般能表示的最大值是多少?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
解析:
0000 0000 = 0
1111 1111 = 1+2+4+8+16+32+64+128=255
答案:255
试题B: 纯质数
本题总分:5 分
【问题描述】
如果一个正整数只有1和它本身两个约数,则称为一个质数(又称素数)。
前几个质数是:2,3,5,7,11,13,17,19,23,29,31,37…。
如果一个质数的所有十进制数位都是质数,我们称它为纯质数。例如:2,3,5,7,23,37都是纯质数,而11,13,17,19,29,31不是纯质数。当然1,4,35也不是纯质数。
请问,在1到20210605中,有多少个纯质数?
import java.util.*;
public class Main{
static boolean check(int x) {//判断十进制数位是不是符合要求
while(x!=0) {
if(x%10==1||x%10==4||x%10==6||x%10==8||x%10==9||x%10==0) return false;
x/=10;
}
return true;
}
static boolean zhi(int x) {//判断是不是质数
for(int i=2;i<x;i++) {
if(x%i==0) return false;
}
return true;
}
public static void main(String[] args){
int res = 0;
for(int i=2;i<=20210605;i++) {
if(check(i)&&zhi(i)) {
res++;
System.out.println(i);
}
}
System.out.println(res);
}
}
答案:1903
试题C: 完全日期
本题总分:10 分
【问题描述】
如果一个日期中年月日的各位数字之和是完全平方数,则称为一个完全日期。
例如:2021年6月5日的各位数字之和为2 + 0 + 2 + 1 + 6 + 5 = 16,而16是一个完全平方数,它是4的平方。所以2021年6月5日是一个完全日期。
例如:2021年6月23日的各位数字之和为2 + 0 + 2 + 1 + 6 + 2 + 3 = 16,是一个完全平方数。所以2021年6月23日也是一个完全日期。
请问,从2001年1月1日到2021年12月31日中,一共有多少个完全日期?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
import java.util.*;
public class Main{
static int find(int x) {
int res = 0;
while(x!=0) {
res += x%10;
x /= 10;
}
return res;
}
static boolean check(int x) {
int y = (int) Math.sqrt(x);
if(y*y==x) return true;
return false;
}
public static void main(String[] args){
int res = 0;
int a[] = new int[]{0,31,28,31,30,31,30,31,31,30,31,30,31};
for(int i=2001;i<=2021;i++) {
for(int j=1;j<=12;j++) {
for(int k=1;k<=a[j];k++) {
int s = find(i)+find(j)+find(k);
if(check(s)) {
res++;
}
}
}
}
System.out.print(res);
}
}
在额外考虑下从2001年1月1日到2021年12月31日中是闰年的2.29的情况,
发现都不满足
答案:977
试题D: 最小权值
本题总分:10 分
【问题描述】
对于一棵有根二叉树T,小蓝定义这棵树中结点的权值W(T)如下:空子树的权值为0。
如果一个结点v有左子树L,右子树R,分别有C(L)和C®个结点,则:
W(v) = 1 + 2W(L) + 3W® +(C(L))2C®。
树的权值定义为树的根结点的权值。
小蓝想知道,对于一棵有2021个结点的二叉树,树的权值最小可能是多少?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
试题E: 大写
时间限制: 1.0s 内存限制: 512.0MB 本题总分:15分
【问题描述】
给定一个只包含大写字母和小写字母的字符串,请将其中所有的小写字母转换成大写字母后将字符串输出。
【输入格式】
输入一行包含一个字符串
【输出格式】
输出转换成大写后的字符串。
【样例输入1】
LanQiao
【样例输出1】
LANQIAO
【评测用例规模与约定】
对于所有评测用例,字符串的长度不超过100。
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String str = sc.next();
for(int i=0;i<str.length();i++) {
if(str.charAt(i)>='a'&&str.charAt(i)<='z') {
System.out.printf("%c",str.charAt(i)-32);
}else {
System.out.printf("%c",str.charAt(i));
}
}
}
}
试题F: 123
时间限制: 5.0s 内存限制: 512.0MB 本题总分:15分
【问题描述】
小蓝发现了一个有趣的数列,这个数列的前几项如下:
1, 1, 2, 1, 2, 3, 1, 2, 3, 4, …
小蓝发现,这个数列前1项是整数1,接下来2项是整数1至2,接下来3项是整数1至3,接下来4项是整数1至4,依次类推。
小蓝想知道,这个数列中,连续一段的和是多少。
【输入格式】
输入的第一行包含一个整数T,表示询问的个数。
接下来T行,每行包含一组询问,其中第i行包含两个整数li和ri,表示询问数列中第li个数到第ri个数的和。
【输出格式】
输出T行,每行包含一个整数表示对应询问的答案。
【样例输入】
3
1 1
1 3
5 8
【样例输出】
1
4
8
【评测用例规模与约定】
对于10%的评测用例,1<T ≤ 30,1 ≤li≤ri ≤100。
对于20%的评测用例,1≤T ≤100,1 ≤li≤ri≤1000。
对于40%的评测用例,1≤T ≤1000,1≤li≤ri≤10^6。
对于70%的评测用例,1<T ≤10000,1≤li≤ri≤10^9。
对于80%的评测用例,1≤T ≤1000,1 ≤li≤ri≤10^12。
对于90%的评测用例,1<T ≤10000,1 ≤li≤ri≤10^12。
对于所有评测用例,1≤T ≤100000,1≤li≤ri≤10^12。
暴力做法,得40%分数
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
long a[] = new long[100001000];
a[0] = 0;
long s[] = new long[100001000];
s[0] = 0;
int k = 1;
for(int i=1;i<=10000000;) {
for(int j=1;j<=k;j++) {
a[i] = j;
s[i] = s[i-1]+a[i];
i++;
}
k++;
}
for(int i=0;i<n;i++) {
int l = sc.nextInt();
int r = sc.nextInt();
System.out.println(s[r]-s[l-1]);
}
}
}
试题G: 和与乘积
时间限制: 1.0s 内存限制: 512.0MB 本题总分:20分
【问题描述】
4
1 3 2 2
【样例输出】
6
【样例解释】
符合条件的区间为[1,1],[1,3],[2,2],[3,3],[3,4],[4,4]。
【评测用例规模与约定】
对于20%的评测用例,n,m ≤3000;
对于50%的评测用例,n,m ≤ 20000;
对于所有评测用例,1 ≤n,m ≤200000,1 ≤ a; ≤200000。
试题H: 巧克力
时间限制: 1.0s 内存限制: 512.0MB 本题总分:20分
【问题描述】
小蓝很喜欢吃巧克力,他每天都要吃一块巧克力。
一天小蓝到超市想买一些巧克力。超市的货架上有很多种巧克力,每种巧克力有自己的价格、数量和剩余的保质期天数,小蓝只吃没过保质期的巧克力,
请问小蓝最少花多少钱能买到让自己吃x天的巧克力。
【输入格式】
输入的第一行包含两个整数x,n,分别表示需要吃巧克力的天数和巧克力的种类数。接下来n行描述货架上的巧克力,其中第i行包含三个整数ai ,bi,ci ,表示第i种巧克力的单价为ai,保质期还剩bi 天(从现在开始的bi天可以吃),数量为ci 。
【输出格式】
输出一个整数表示小蓝的最小花费。
如果不存在让小蓝吃x天的购买方案,输出-1。
【样例输入】
10 3
1 6 5
2 7 3
3 10 10
【样例输出】
18
【样例说明】
一种最佳的方案是第1种买5块,第2种买2块,第3种买3块。
前5天吃第1种,第6、7天吃第2种,第8至10天吃第3种。
【评测用例规模与约定】
对于30%的评测用例,n,x ≤ 1000。
对于所有评测用例,1≤n,x ≤100000,1 ≤ai,bi,ci≤109。