题目描述
现在有一个数组,其值为从1到10000的连续增长的数字。出于某次偶然操作,导致这个数组中丢失了某三个元素,同时顺序被打乱,现在需要你用最快的方法找出丢失的这三个元素,并且将这三个元素根据从小到大重新拼接为一个新数字,计算其除以7的余数。 例:丢失的元素为336,10,8435,得到的新数字为103368435,除以七的余数为2。
输入描述:
输入数据为一行,包含9997个数字,空格隔开。
输出描述:
输出为一行,包含一个数字。
示例1
输入
同题设例子输入
输出
2
解析:首先来个排序,然后开始找那三个数了,找到了继续排序,然后拼接,最后记得%7得结果。
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()){
String s= scanner.nextLine();
String [] str=s.split(" ");
int [] arr= new int[str.length];
for(int i=0;i<str.length;i++){//输入的当行字符串转为整数
arr[i]=Integer.parseInt(str[i]);
}
Arrays.sort(arr);//排序
List<Integer> list = new ArrayList<>();//存储三个数
for(int i=0;i<arr.length;i++){
for(int j=i+1;j<arr.length;i++){
if(arr[j]==arr[i]+2){//找到了丢失的数,保存
list.add(arr[i]+1);
}else {
break;
}
}
}
Collections.sort(list);//丢失的数排序
StringBuilder sb = new StringBuilder();
for(Integer i:list){
sb.append(i);
}
System.out.println(Long.parseLong(sb.toString())%7);
}
}
}