美团机试题被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

相关推荐

不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
牛舌:如果我不想去,不管对方给了多少,我一般都会说你们给得太低了。这样他们就会给下一个offer的人更高的薪资了。
点赞 评论 收藏
分享
昨天 12:43
已编辑
门头沟学院 C++
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务