题目描述

neuq最近推出了一套具有特殊意义的邮票,邮票的价值是从1分到N分。并且每张邮票的价值都不相同。

谷学长看中了这套邮票,可是一掏兜发现自己只有M分。但是他非常想买,于是他决定买总价值刚好为M分的邮票,但谷学长不希望他买的邮票断断续续,所以他还希望能够买从x分到y分连续的y-x+1张邮票。

你的任务是求出所有符合要求的方案,以[x,y]的形式输出。

输入描述

输入包含多组数据,每组数据只有一行,包含两个数N和M(1<=N,M<=10^9)。
输出描述
对于每组输入数据,每行输出包含一个合法方案:[x,y]。按x值从小到大输出。

每组输出数据不含任何空格。

样例输入

20 15

样例输出

[1,5]
[4,6]
[7,8]
[15,15]

源码:

import java.util.ArrayList;
import java.util.Scanner;
public class Main {
        public static void main(String[] args) {
            Scanner scanner= new Scanner(System.in);
            ArrayList<String> a=new ArrayList();//用于所有数据的输出
            while(scanner.hasNext()) {
                int N=scanner.nextInt();
                int M=scanner.nextInt();
                for(int i=1;i<=M;i++) {//双层循环嵌套
                    int sum=0;
                    for(int j=i;j<=M;j++) {
                        sum=sum+j;
                        if (sum==M) {
                            a.add("["+i+","+j+"]");
                        }
                    }
                }
            }//while循环结束
            //输出数组中内容
            for(int i=0;i<a.size();i++) {
                System.out.println(a.get(i));
            }
            
        }
}

最后修改:2022 年 04 月 23 日
如果觉得我的文章对你有用,请随意赞赏