美团机试题被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-07 23:57
已编辑
电子科技大学 Java
八街九陌:博士?客户端?开发?啊?
点赞 评论 收藏
分享
牛客410815733号:这是什么电影查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务