文章目录
基于一直训练的是核心代码模式,切换到ACM模式就一脸懵,
所以关于笔试题中的ACM模式,进行输入输出训练
参考的答题链接:https://ac.nowcoder.com/acm/contest/5652
以下仅做自己训练的答题记录
计算A+B
训练无标志的多组输入
题目描述
计算a+b
数据范围:数据组数满足
1
≤
t
≤
100
1≤t≤100
1≤t≤100,数据大小满足
1
≤
n
≤
1000
1≤n≤1000
1≤n≤1000
输入描述
输入包括两个正整数a,b
(
1
<
=
a
,
b
<
=
1000
)
(1 <= a, b <= 1000)
(1<=a,b<=1000),输入数据包括多组。
输出描述
输出a+b的结果
示例
输入
1 5
10 20
输出
6
30
已通过代码
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(a + b);
}
}
}
训练有组数的多组输入
题目描述
计算a+b
数据范围:数据组数满足
1
≤
t
≤
100
1≤t≤100
1≤t≤100,数据大小满足
1
≤
n
≤
1000
1≤n≤1000
1≤n≤1000
输入描述
输入第一行包括一个数据组数t
(
1
<
=
t
<
=
100
)
(1 <= t <= 100)
(1<=t<=100)
接下来每行包括两个正整数a,b
(
1
<
=
a
,
b
<
=
1000
)
(1 <= a, b <= 1000)
(1<=a,b<=1000)
输出描述
输出a+b的结果
示例
输入
2
1 5
10 20
输出
6
30
已通过代码
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
for (int i = 0; i < num; i++) {
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(a + b);
}
}
}
训练有结束标志的多组输入
题目描述
计算a+b
数据范围:数据组数满足
1
≤
t
≤
100
1≤t≤100
1≤t≤100,数据大小满足
1
≤
n
≤
100
1≤n≤100
1≤n≤100
输入描述
输入包括两个正整数a,b
(
1
<
=
a
,
b
<
=
1
0
9
)
(1<= a, b<= 10^9)
(1<=a,b<=109),输入数据有多组, 如果输入为0 0则结束输入
输出描述
输出a+b的结果
示例
输入
1 5
10 20
0 0
输出
6
30
已通过代码
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while (true) {
int a = sc.nextInt();
int b = sc.nextInt();
if (a == 0 && b == 0){
break;
}
System.out.println(a + b);
}
}
}
计算一系列数的和
训练有结束标志的多组输入
题目描述
计算一系列数的和
数据范围:数据组数满足
1
≤
t
≤
100
1≤t≤100
1≤t≤100,数据大小满足
1
≤
n
≤
100
1≤n≤100
1≤n≤100,每组数据中的值满足
1
≤
v
a
l
≤
100
1≤val≤100
1≤val≤100
输入描述
输入数据包括多组。
每组数据一行,每行的第一个整数为整数的个数n
(
1
<
=
n
<
=
100
)
(1 <= n <= 100)
(1<=n<=100), n为0的时候结束输入。
接下来n个正整数,即需要求和的每个正整数。
输出描述
每组数据输出求和的结果
示例
输入
4 1 2 3 4
5 1 2 3 4 5
0
输出
10
15
已通过代码
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
int count = sc.nextInt();
if (count == 0) {
break;
}
int sum = 0;
for (int i = 0; i < count; i++) {
sum += sc.nextInt();
}
System.out.println(sum);
}
}
}
训练有组数的多组输入
题目描述
计算一系列数的和
数据范围:数据组数满足
1
≤
t
≤
100
1≤t≤100
1≤t≤100,数据大小满足
1
≤
n
≤
100
1≤n≤100
1≤n≤100,每组数据中的值满足
1
≤
v
a
l
≤
100
1≤val≤100
1≤val≤100
输入描述
输入的第一行包括一个正整数t
(
1
<
=
t
<
=
100
)
(1 <= t <= 100)
(1<=t<=100),表示数据组数。
接下来t行,每行一组数据。
每行的第一个整数为整数的个数n
(
1
<
=
n
<
=
100
)
(1 <= n <= 100)
(1<=n<=100)。
接下来n个正整数,即需要求和的每个正整数。
输出描述
每组数据输出求和的结果
示例
输入
2
4 1 2 3 4
5 1 2 3 4 5
输出
10
15
已通过代码
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int count = sc.nextInt();
for (int i = 0; i < count; i++) {
int num = sc.nextInt();
int sum = 0;
for (int j = 0; j < num; j++) {
sum += sc.nextInt();
}
System.out.println(sum);
}
}
}
训练无标志的多组输入
题目描述
计算一系列数的和
数据范围:
1
≤
n
≤
1000
1≤n≤1000
1≤n≤1000,所有数都满足
1
≤
v
a
l
≤
1000
1≤val≤1000
1≤val≤1000
输入描述
输入数据有多组, 每行表示一组输入数据。
每行的第一个整数为整数的个数n
(
1
<
=
n
<
=
100
)
(1 <= n <= 100)
(1<=n<=100)。
接下来n个正整数, 即需要求和的每个正整数。
输出描述
每组数据输出求和的结果
示例
输入
4 1 2 3 4
5 1 2 3 4 5
输出
10
15
已通过代码
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int num = sc.nextInt();
int sum = 0;
for (int i = 0; i < num; i++) {
sum += sc.nextInt();
}
System.out.println(sum);
}
}
}
训练无整数个数的多组输入
题目描述
计算一系列数的和
数据范围:
1
≤
n
≤
1000
1≤n≤1000
1≤n≤1000,所有数都满足
1
≤
v
a
l
≤
1000
1≤val≤1000
1≤val≤1000
输入描述
输入数据有多组, 每行表示一组输入数据。
每行不定有n个整数,空格隔开。
(
1
<
=
n
<
=
100
)
(1 <= n <= 100)
(1<=n<=100)。
输出描述
每组数据输出求和的结果
示例
输入
1 2 3
4 5
0 0 0 0 0
输出
6
9
0
已通过代码
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextLine()) {
String[] nums = sc.nextLine().split(" ");
int sum = 0;
for (String num : nums) {
sum += Integer.parseInt(num);
}
System.out.println(sum);
}
}
}
字符串排序
训练有个数的字符串排序
题目描述
对输入的字符串进行排序后输出
输入描述
输入有两行,第一行n
第二行是n个字符串,字符串之间用空格隔开
输出描述
输出一行排序后的字符串,空格隔开,无结尾空格
示例
输入
5
c d a bb e
输出
a bb c d e
已通过代码
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = Integer.parseInt(sc.nextLine());
String[] s1 = sc.nextLine().split(" ");
Arrays.sort(s1, (a, b) -> {
return a.compareTo(b);
});
StringBuilder sb = new StringBuilder();
for (int i = 0; i < n; i++) {
if (i != s1.length - 1) {
sb.append(s1[i]);
sb.append(" ");
} else {
sb.append(s1[i]);
}
}
System.out.println(sb.toString());
}
}
训练无个数的以空格分隔的字符串排序
题目描述
对输入的字符串进行排序后输出
输入描述
多个测试用例,每个测试用例一行。
每行通过空格隔开,有n个字符,n<100
输出描述
对于每组测试用例,输出一行排序过的字符串,每个字符串通过空格隔开
示例
输入
a c bb
f dddd
nowcoder
输出
a bb c
dddd f
nowcoder
已通过代码
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNextLine()){
String[] s1 = sc.nextLine().split(" ");
Arrays.sort(s1, (a, b) -> {
return a.compareTo(b);
});
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s1.length; i++) {
if (i != s1.length - 1) {
sb.append(s1[i]);
sb.append(" ");
} else {
sb.append(s1[i]);
}
}
System.out.println(sb.toString());
}
}
}
训练无个数的以逗号分隔的字符串排序
题目描述
对输入的字符串进行排序后输出
输入描述
多个测试用例,每个测试用例一行。
每行通过空格隔开,有n个字符,n<100
输出描述
对于每组用例输出一行排序后的字符串,用’,'隔开,无结尾空格
示例
输入
a c bb
f dddd
nowcoder
输出
a bb c
dddd f
nowcoder
已通过代码
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNextLine()){
String[] s1 = sc.nextLine().split(",");
Arrays.sort(s1, (a, b) -> {
return a.compareTo(b);
});
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s1.length; i++) {
if (i != s1.length - 1) {
sb.append(s1[i]);
sb.append(",");
} else {
sb.append(s1[i]);
}
}
System.out.println(sb.toString());
}
}
}