赞
踩
小明玩一个游戏。系统发1+n张牌,每张牌上有一个整数。第一张给小明,后n张按照发牌顺序排成连续的一行。需要小明判断,后n张牌中,是否存在连续的若干张牌,其和可以整除小明手中牌上的数字.
输入描述:
输入数据有多组,每组输入数据有两行,输入到文件结尾结束第一行有两个整数n和m,空格隔开。m代表发给小明牌上的数字
第二行有n个数,代表后续发的n张牌上的数字,以空格隔开。
输出描述:
对每组输入,如果存在满足条件的连续若干张牌,则输出1:否则,输出0
补充说明:
1 <= n <= 1000
1 <= 牌上的整数 <= 400000
输入的组数,不多于1000
用例确保输入都正确,不需要考虑非法情况示例1
输入:
6 7
2 12 6 3 5 5
10 11
1 1 1 1 1 1 1 1 1 1
输出1
0
说明:
两组输入。第一组小明牌的数字为7,再发了6张牌。第1、2两张牌数字和为14,可以整除7,输出1。
第二组小明牌的数字为11,再发了10张牌,这10张牌数字和为10,无法整除11,输出0。
1:我们以示例1为例子。
首先发给小明的牌,数字是7.
其次后面的数字是 2 6 12 3 5 5
然后我们先算出第一个数字与7 的余数,为2然后上一步的 2 再加上后面的12,再对7取余,得到 0,满足条件,即可输出。
2:其实逻辑还是比较清晰的
- import java.util.Scanner;
- import java.util.*;
- import java.util.stream.Stream;
- import java.util.HashMap;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- import java.util.stream.Collectors;
-
- public class Main {
- public static void main(String[] args) {
- Scanner in = new Scanner(System.in);
- while (in.hasNext()){
-
- int n = in.nextInt();
- int m = in.nextInt();
- int[] nums = new int[n];
- for(int i=0; i<n; i++){
- nums[i] = in.nextInt();
- }
-
- int sum_value = 0;
- boolean flag = false;
- int[] remainders = new int[m];
- remainders[0] = 1;
- for(int i=0; i<n; i++){
- sum_value += nums[i];
- sum_value %= m;
- if(remainders[sum_value] != 0){
- flag = true;
- break;
- }
- remainders[sum_value] ++;
- }
-
- System.out.println(flag ? 1 : 0);
- }
- return;
- }
- }

时间限制:C/C++ 1秒,其他语言 2秒
空间限制:C/C++262144K,其他语言524288K
64bit IO Format:%lld
语言限定:
C(clang11), C++(clang++11), Pascal(fpc 3.0.2), Java(javac 1.8), Python2(2.7.3),
PHP(7.4.7), C#(mcs5.4), ObjC(gcc 5.4), Pythen3(3.9), JavaScript Node(12.18.2), JavaScript V8(6.0.0),
Sqlite(3.7.9), R(4.0.3), Go(1.14.4), Ruby(2.7.1), Swift(5.3), matlab(Octave 5.2), Pypy2(pypy2.7.13),
Pypy3(pypy3.6.1), Rust(1.44), Scala(2.11.12), Kotlin(1.4.10), Groovy(3.0.6), TypeScript(4.1.2), Mysql(8.0)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。