美团笔试第一题简单AC解法

import java.util.*;

/**
 * 求解思路,设a,b为两个整数,ab%7==((a%7)b)%7恒成立。因此代码如下
 * 例如 12 和 1996 两个数, 121996可以被7整除;那么12余7等于5 ,51996也可以被7整除 
 *
 * @author JoyStrong
 *
 */
public class Main {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		int[] a = new int[n];
		int[] b = new int[7];
		for (int i = 0; i < n; i++) {
			a[i] = in.nextInt();
			b[a[i] % 7]++;
		}

		long count = 0;
		if (b[0] > 0) count = b[0] * (b[0] - 1);
			
		for (int i = 0; i < n; i++) {
			int temp = a[i] % 7;
			if (temp != 0) {
				for (int j = 1; j < 7; j++) {
					if (Long.parseLong((j + "" + a[i])) % 7 == 0) {
						count += b[j];
						if (j == temp) {
							count--;
						}
					}
				}
			}
		}

		System.out.println(count);
	}

}

#美团#
全部评论
测试用例为   2     12   1212 的时候输出应该是1,只有121212,这个算法跑出来是2
点赞 回复 分享
发布于 2017-09-14 22:52
不太明白这个思路,求科普
点赞 回复 分享
发布于 2017-09-14 21:44
我想请问下 b[0] 存在之后为什么count = b[0] * (b[0]-1)
点赞 回复 分享
发布于 2017-09-15 19:32
同一个思路,c++GG?
点赞 回复 分享
发布于 2017-09-14 23:08
大神,你说的思路看懂了,但是代码没看懂呀,求解释。
点赞 回复 分享
发布于 2017-09-14 22:33
ac了吗
点赞 回复 分享
发布于 2017-09-14 21:40

相关推荐

牛客928043833号:在他心里你已经是他的员工了
点赞 评论 收藏
分享
05-30 18:54
武汉商学院 Java
湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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