时间限制:1.000S??空间限制:32MB
你的任务是计算若干整数的和。
输入的第一行为一个整数N,接下来N行每行先输入一个整数M,然后在同一行内输入M个整数。
对于每组输入,输出M个数的和,每组输出之间输出一个空行。
3
4 1 2 3 4
5 1 2 3 4 5
3 1 2 3
10
15
6
注意以上样例为一组测试数据,后端判题会有很多组测试数据,也就是会有多个N的输入
例如输入可以是:
3
4 1 2 3 4
5 1 2 3 4 5
3 1 2 3
3
4 1 2 3 4
5 1 2 3 4 5
3 1 2 3
输出则是
10
15
6
10
15
6
只保证每组数据间是有空行的。但两组数据并没有空行
本题是A+B系列的最后一题,也是前面几道题的综合,不涉及到新的语法知识点,我们可以把这节内容当成对之前学习的一个练习,但是你仍然可以从这道题目中学会如何根据题目要求控制输出格式。
先来看题目要求:输入的第一行为一个整数N,接下来N行每行会先输入一个整数M,然后在同一行内输入M个整数, 然后计算这M个整数的和。
题目需要注意的两点是:
会有多个N的输入,也就是说,会有多组测试数据。
保证每组数据内部的输出是有空行的,但两组数据之间并没有空行
即下面的一个形式:
根据前言,我们已经注意到测试数据不止一组,也就是说可能会有多个 N 的输入,这和第二题是类似的,所以可以初步写出下面的代码。
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNextLine()){
int N = sc.nextInt();
while(N-- > 0){
}
}
}
}
每行数据首先会输入一个整数 m , 代表着这行数据有 m 个数据,所以需要提前定义变量 m 接收第一个整数,然后使用 while 循环来控制 m 个数据的输入和求和。
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNextLine()){
int N = sc.nextInt();
while(N-- > 0){
int M = sc.nextInt();
while(M-- > 0){
}
}
}
}
}
接下来的情况就和A+B问题IV类似,转换成m个数据的求和问题,需要定义变量sum指代数据总和,定义变量a指代输入的数据,然后遍历得到结果
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNextLine()){
int N = sc.nextInt();
while(N-- > 0){
int M = sc.nextInt();
int sum = 0;
while(M-- > 0){
sum += sc.nextInt();
}
System.out.println(sum);
if(N > 0) System.out.println();
}
}
}
}
当m个数据处理完毕后,表示这一行的数据处理完毕,需要输出一个空行
System.out.println();
但是题目要求每组数据内部的输出(也就是每行数据之间)是有空行的,但两组数据之间并没有空行,所以在每组数据的最后一行,也就是n被修改为0的时候,不需要输出空行。
if(N > 0) System.out.println();
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int N;
while(sc.hasNext()){
N=sc.nextInt();
while(N-->0){
int M=sc.nextInt();
int sum=0;
while(M-->0){
int x=sc.nextInt();
sum+=x;
}
System.out.println(sum);
if(N > 0) System.out.println();
}
}
}
}