美团机试题被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);
}
#美团#
全部评论
超时,时间复杂度可以On的
点赞 回复 分享
发布于 2017-09-15 12:27
Python暴力解法都有90%
点赞 回复 分享
发布于 2017-09-15 10:15
虽然没收到笔试难过的喝了杯水,但是这个题目我还是有一点点想法的,比如一个整除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
10的5次方,int长不够,用两个没来得及试,就结束了
点赞 回复 分享
发布于 2017-09-15 08:45
我知知道int 换long,渣渣70%路过😂。。算法优化?tan90
点赞 回复 分享
发布于 2017-09-14 22:35
跟楼主一下,貌似看下来两个说法,一个是int取值范围问题,还有一个是TLE了
点赞 回复 分享
发布于 2017-09-14 22:33
溢出
点赞 回复 分享
发布于 2017-09-14 22:32

相关推荐

不愿透露姓名的神秘牛友
07-07 11:30
仁者伍敌:kpi都懒得刷了属于是
点赞 评论 收藏
分享
找到实习了&nbsp;给了150一天&nbsp;但是说是低代码&nbsp;值得去吗
码农索隆:是在没实习,可去,待个一两周,不行就润呗
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 14:00
林子大了什么鸟都有啊,我觉得我说的已经很客气了,阴阳谁呢
牛客62656195...:应该不是阴阳吧?你第一次注册的时候boss就说你是牛人
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务