蓝桥杯java基础

发布时间:2024年01月21日

6. A+B问题VIII

时间限制: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的输入,也就是说,会有多组测试数据。

  • 保证每组数据内部的输出是有空行的,但两组数据之间并没有空行

即下面的一个形式:

image-20230919163707160

题目解析

根据前言,我们已经注意到测试数据不止一组,也就是说可能会有多个 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();

java代码实现:

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();
                
            }
          
        }
    
    }
  
}

文章来源:https://blog.csdn.net/m0_59001573/article/details/135736275
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。