美团机试题被7整除这个题我的代码哪里有问题通过率只有百分之十

Scanner sc=new Scanner(System.in);
while (sc.hasNext()){
int n=sc.nextInt();
String[] a=new String[n];
for (int i = 0; i < a.length; i++) {
a[i]=sc.next();
}
List<String> list=new ArrayList<>();
for (int i = 0; i < a.length; i++) {
list.add(a[i]);
}
for (int i = 0; i < a.length; i++) {
for (int j = i+1; j < a.length; j++) {
String s1=a[i]+a[j];
list.add(s1);
String s2=a[j]+a[i];
list.add(s2);
}
}
int[] b=new int[list.size()];
for (int i = 0; i < a.length; i++) {
b[i]=Integer.parseInt(list.get(i));
}
int sum=0;
for (int i = 0; i < a.length; i++) {
if (b[i]%7==0) {
sum++;
}
}
System.out.println(sum);
}
#美团#
全部评论
溢出
点赞 回复 分享
发布于 2017-09-14 22:32
跟楼主一下,貌似看下来两个说法,一个是int取值范围问题,还有一个是TLE了
点赞 回复 分享
发布于 2017-09-14 22:33
我知知道int 换long,渣渣70%路过😂。。算法优化?tan90
点赞 回复 分享
发布于 2017-09-14 22:35
10的5次方,int长不够,用两个没来得及试,就结束了
点赞 回复 分享
发布于 2017-09-15 08:45
虽然没收到笔试难过的喝了杯水,但是这个题目我还是有一点点想法的,比如一个整除7的数只能拼整除7的数,不论在前在后;不能整除的,例如20,在计算模7的值,为6,在和另外一个不能整除的数拼的时候,比如8,就计算6*10+1(8%7)=61%7!=0,那么他俩就不能拼,换位置也一样1*10+(20%7)=16!=0,所以20和8怎么组合都不行;这样算的好处是不会溢出,还少了一大票无效枚举操作,省了不少时间呢。
点赞 回复 分享
发布于 2017-09-15 10:05
Python暴力解法都有90%
点赞 回复 分享
发布于 2017-09-15 10:15
超时,时间复杂度可以On的
点赞 回复 分享
发布于 2017-09-15 12:27

相关推荐

10-17 16:07
门头沟学院 Java
牛牛大你18号:在汇报,突然弹出来,,领导以为我在准备跳槽,刚从领导办公室谈心出来
点赞 评论 收藏
分享
11-28 17:58
门头沟学院 Java
美团 JAVA开发 n×15.5
牛客786276759号:百度现在晋升很难的 而且云这块的业务没美团好 你看百度股价都跌成啥样了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务