美团机试题被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:48
点赞 评论 收藏
分享
挣K存W养DOG:入职送金条全球游,路过缅甸停一下🐔
点赞 评论 收藏
分享
努力学习的小绵羊:我反倒觉得这种挺好的,给不到我想要的就别浪费大家时间了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务