一、问题描述
在计算机存储中,15.125GB是多少MB?
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
计算机二进制1GB=1024MB;
答案:15488
二、问题描述
一个数被称为质数(或素数)是指除开1和它本身两个约数外,没有其他的约数。
在不超过10000的数中,一共有多少个质数?
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
答案:1229
//求范围内的质数数量 public class Main { public static void main(String[] args) { int count = 1; int j; for(int i = 2; i <= 10000; i++){ j = 2; while (i%j != 0){ j++; if(j==i){ count++; } } } System.out.println(count); } }
曾看过一个题目是求1-10000的质数有哪些?
//求范围内的具体质数 public class Main { public static void main(String[] args) { System.out.println("2"); int j; for(int i = 2; i <= 10000; i++){ j = 2; while (i%j != 0){ j++; if(j==i){ System.out.println(i); } } } } }
三、问题描述
一个包含有2019个结点的无向连通图,最少包含多少条边?
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
如下图所示为一个无向连通图:任何两个节点之前都是连通的,都存在一条路径,并且图中没有方向。
有n个顶点的无向连通图最多有n(n-1)/2条边(构成一个无向完全图的情况);
最少有n-1条边(n个顶点是连通的);答案:2018
四、问题描述
一个包含有2019个结点的有向图,最多包含多少条边?(不允许有重边)
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
如下图所示为一个有向图:一幅有向图是由一组顶点和一组有方向的边组成的,每条有方向的边都连接着有序的一对顶点。
一个具有n个顶点的有向图最多有n(n-1)条边;
答案:4074342
五、问题描述
小明对类似于 hello 这种单词非常感兴趣,这种单词可以正好分为四段,第一段由一个或多个辅音字母组成,第二段由一个或多个元音字母组成,第三段由一个或多个辅音字母组成,第四段由一个或多个元音字母组成。
给定一个单词,请判断这个单词是否也是这种单词,如果是请输出yes,否则请输出no。
元音字母包括 a, e, i, o, u,共五个,其他均为辅音字母。
输入格式
输入一行,包含一个单词,单词中只包含小写英文字母。
输出格式
输出答案,或者为yes,或者为no。
样例输入
lanqiao
样例输出
yes
样例输入
world
样例输出
no
评测用例规模与约定
对于所有评测用例,单词中的字母个数不超过100。
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Set<Character> fset = new HashSet<>();
Set<Character> yset = new HashSet<>();
for (char i = 'a'; i <= 'z'; i++) {
if (i == 'a' || i == 'e' || i == 'i' || i == 'o' || i == 'u') {
yset.add(i);
}
else {
fset.add(i);
}
}
Scanner sc = new Scanner(System.in);
String str = sc.next();
int p = 0, aa = 0, bb = 0, cc = 0, dd = 0;
while (p < str.length() && fset.contains(str.charAt(p))) {
aa = 1;
p++;
}
while (p < str.length() && yset.contains(str.charAt(p))) {
bb = 1;
p++;
}
while (p < str.length() && fset.contains(str.charAt(p))) {
cc = 1;
p++;
}
while (p < str.length() && yset.contains(str.charAt(p))) {
dd = 1;
p++;
}
if (p == str.length() && aa == 1 && bb == 1 && cc == 1 && dd == 1) {
System.out.println("yes");
} else {
System.out.println("no");
}
}
}
六、问题描述
给定一个单词,请使用凯撒密码将这个单词加密。
凯撒密码是一种替换加密的技术,单词中的所有字母都在字母表上向后偏移3位后被替换成密文。即a变为d,b变为e,...,w变为z,x变为a,y变为b,z变为c。
例如,lanqiao会变成odqtldr。
输入格式
输入一行,包含一个单词,单词中只包含小写英文字母。
输出格式
输出一行,表示加密后的密文。
样例输入
lanqiao
样例输出
odqtldr
评测用例规模与约定
对于所有评测用例,单词中的字母个数不超过100。
//小写或大写字母加密
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String a = input.nextLine();
int key = 3;
Encryption(a,key);
input.close();
}
public static void Encryption(String arr,int k) {
String string ="";
for(int i=0;i<arr.length();i++) {
char c = arr.charAt(i);
if(c>='a'&&c<='z') { //如果字符串中的某个字符是小写字母
c+=k%26; //移动key%26位
if(c<'a')
c+=26;//向左超界
if(c>'z')
c-=26;//向右超界
}
else if(c>='A'&&c<='Z') //如果字符串中的某个字符是大写字母
{
c+=k%26;//移动key%26位
if(c<'A')
c+=26;//向左超界
if(c>'Z')
c-=26;//向右超界
}
string +=c;//将解密后的字符连成字符串
}
System.out.println(string);
}
}
曾见过一个题目是解密的,如下:
//小写或大写字母解密
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String a = input.nextLine();
int key = 3;
Decrypt(a,key);
input.close();
}
public static void Decrypt(String str, int n) {
// TODO Auto-generated method stub
//解密
int k=Integer.parseInt("-"+n);
String string="";
for(int i=0;i<str.length();i++) {
char c=str.charAt(i);
if(c>='a'&&c<='z')//如果字符串中的某个字符是小写字母
{
c+=k%26;//移动key%26位
if(c<'a')
c+=26;//向左超界
if(c>'z')
c-=26;//向右超界
}else if(c>='A'&&c<='Z')//如果字符串中的某个字符是大写字母
{
c+=k%26;//移动key%26位
if(c<'A')
c+=26;//向左超界
if(c>'Z')
c-=26;//向右超界
}
string +=c;//将解密后的字符连成字符串
}
System.out.println(string);
}
}
七、问题描述
给定正整数 n,请问在整数 1 至 n 中,数字中没有数位相同的数有多少个?
例如,当 n=30 时,除开 11 和 22 以外,其他的数都没有数位相同,因此答案为 28。
输入格式
输入的第一行包含一个整数 n。
输出格式
输出一行包含一个整数,表示答案。
样例输入
30
样例输出
28
评测用例规模与约定
对于 40% 的评测用例,1 <= n <= 1000。
对于 80% 的评测用例,1 <= n <= 100000。
对于所有评测用例,1 <= n <= 1000000。
import java.util.Scanner;
public class Main {
public static boolean check(int i){
int arr[]=new int[10];
while(i>0){
arr[i%10]++;
i/=10;
}
for(int j=0;j<10;j++)
if(arr[j]>1) return false;
return true;
}
public static void main(String[] args) {
int count=0;
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
for(int i=1;i<=n;i++)
if(check(i)) count++;
System.out.println(count);
sc.close();
}
}
八、问题描述
当夜深人静时,小明喜欢独自凝望着天空。
这一天,小明看着满天的繁星,突发奇思妙想,他发现可以通过用直线连接天空中的星星来组成美丽的图案。
小明想到一个非常简单的图案:大写的V,如果连接三颗星星,中间一颗最靠下方,这样的形状就是一个大V了。
小明越想越着迷,他想知道,天空中最亮的 n 颗星星,可以有多少种方式组成大V。
为了更严谨的看待问题,小明把自己所见范围的天空映射到了一个平面直角坐标系中,他看到的最亮的 n 颗星星在这个坐标系中都有自己的坐标。
如果三颗星星的坐标分别为 (x_i, y_i), (x_j, y_j), (x_k, y_k),当 x_i < x_j < x_k 且 y_j < y_i 且 y_j < y_k 时,这三颗星星就组成了一个大 V。
输入格式
输入的第一行包含一个整数 n 。
接下来 n 行,每行两个整数,每一行表示一颗星星的 x 坐标和 y 坐标。
输出格式
输出一行包含一个整数,表示有多少种方式组成大V。
样例输入
5
4 5
2 3
1 4
3 3
5 8
样例输出
4
评测用例规模与约定
对于 30% 的评测用例,2 <= n <= 50,星星的坐标为不超过 1000 的非负整数。
对于 50% 的评测用例,2 <= n <= 100,星星的坐标为不超过 1000 的非负整数。
对于 80% 的评测用例,2 <= n <= 1000,星星的坐标为不超过 10000 的非负整数。
对于所有评测用例,2 <= n <= 5000,星星的坐标为不超过 100000 的非负整数。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner Input = new Scanner(System.in);
int n = Input.nextInt();
int abc[][] = new int[n][2];
int sum =0;
for(int i=0;i<n;i++){
abc[i][0]= Input.nextInt();
abc[i][1]= Input.nextInt();
} //完成输入
for(int i=0;i<abc.length;i++){ //选取第一个点
for(int j=i+1;j<abc.length;j++){ //之后选取第二个点
for(int k=j+1;k<abc.length;k++){ //之后选取第三个点
//看三个点是否满足当题中( x_i < x_j < x_k 且 y_j < y_i 且 y_j < y_k)
//三个点的排列一共有6种情况,直接进行判断,是否符合这6种情况的其中一种
if((abc[i][0]<abc[j][0]&&abc[j][0]<abc[k][0])&&(abc[j][1]<abc[i][1])&&(abc[j][1]<abc[k][1]))sum=sum+1;
else if((abc[k][0]<abc[j][0]&&abc[j][0]<abc[i][0])&&(abc[j][1]<abc[i][1])&&(abc[j][1]<abc[k][1]))sum=sum+1;
else if((abc[k][0]<abc[i][0]&&abc[i][0]<abc[j][0])&&(abc[i][1]<abc[k][1])&&(abc[i][1]<abc[j][1]))sum=sum+1;
else if((abc[j][0]<abc[i][0]&&abc[i][0]<abc[k][0])&&(abc[i][1]<abc[k][1])&&(abc[i][1]<abc[j][1]))sum=sum+1;
else if((abc[i][0]<abc[k][0]&&abc[k][0]<abc[j][0])&&(abc[k][1]<abc[i][1])&&(abc[k][1]<abc[j][1]))sum=sum+1;
else if((abc[j][0]<abc[k][0]&&abc[k][0]<abc[i][0])&&(abc[k][1]<abc[i][1])&&(abc[k][1]<abc[j][1]))sum=sum+1;
}
}
}
System.out.println(sum);
}
}
九、问题描述
小明开了一家花店,这天,有个客户定了非常多的花,按客户的需要,这些花要排成 n 行 m 列。
小明要将这些花运送到客户那,然而由于花太多,需要分两辆车才能装下。
小明怕自己弄错花的顺序,因此在分车的时候,他准备将前面一些列(注意不是行)的花放在第一辆车上,将其实的花放在第二辆车上。
已知每盆花的重量,要使第一辆车和第二辆车尽可能总重量一致,请帮助小明分装这些花,请告诉小明两辆车的重量最小差多少。
输入格式
输入的第一行包含两个整数 n, m,分别表示行数和列数。
接下来 n 行,每行 m 个正整数,分别表示每盆花的重量。
输出格式
输出一个整数,表示总重量最接近时两车的重量之差(的绝对值)。
样例输入
3 4
1 2 3 9
5 6 7 8
2 3 4 9
样例输出
7
样例说明
将前 3 列放一辆车,后 1 列放一辆车,第一辆比第二辆重 7 。
评测用例规模与约定
对于 30% 的评测用例,2 <= n, m <= 20。
对于 70% 的评测用例,2 <= n, m <= 100。
对于所有评测用例,2 <= n, m <= 1000,每盆花的重量不超过 1000。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
long mi=200000000L;
int cur=0;
int sum=0;
int n=sc.nextInt(),m=sc.nextInt();
int arr[][]=new int[n][m];
int ans[]=new int[m];
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
arr[i][j]=sc.nextInt();
sum+=arr[i][j];
ans[j]+=arr[i][j];
}
}
for(int i=0;i<ans.length;i++){
cur+=ans[i];
mi=mi<Math.abs(sum-cur-cur)?mi:Math.abs(sum-cur-cur);
}
System.out.println(mi);
sc.close();
}
}
十、问题描述
2015年,全中国实现了户户通电。作为一名电力建设者,小明正在帮助一带一路上的国家通电。
这一次,小明要帮助 n 个村庄通电,其中 1 号村庄正好可以建立一个发电站,所发的电足够所有村庄使用。
现在,这 n 个村庄之间都没有电线相连,小明主要要做的是架设电线连接这些村庄,使得所有村庄都直接或间接的与发电站相通。
小明测量了所有村庄的位置(坐标)和高度,如果要连接两个村庄,小明需要花费两个村庄之间的坐标距离加上高度差的平方,形式化描述为坐标为 (x_1, y_1) 高度为 h_1 的村庄与坐标为 (x_2, y_2) 高度为 h_2 的村庄之间连接的费用为
sqrt((x_1-x_2)*(x_1-x_2)+(y_1-y_2)*(y_1-y_2))+(h_1-h_2)*(h_1-h_2)。
在上式中 sqrt 表示取括号内的平方根。请注意括号的位置,高度的计算方式与横纵坐标的计算方式不同。
由于经费有限,请帮助小明计算他至少要花费多少费用才能使这 n 个村庄都通电。
输入格式
输入的第一行包含一个整数 n ,表示村庄的数量。
接下来 n 行,每个三个整数 x, y, h,分别表示一个村庄的横、纵坐标和高度,其中第一个村庄可以建立发电站。
输出格式
输出一行,包含一个实数,四舍五入保留 2 位小数,表示答案。
样例输入
4
1 1 3
9 9 7
8 8 6
4 5 4
样例输出
17.41
评测用例规模与约定
对于 30% 的评测用例,1 <= n <= 10;
对于 60% 的评测用例,1 <= n <= 100;
对于所有评测用例,1 <= n <= 1000,0 <= x, y, h <= 10000。
(新手上路,大神勿喷,请多多指教)