题解 | #被 7 整除#

被 7 整除

https://www.nowcoder.com/practice/532a3814a4c646f2a063d5745b870fbe

import java.util.Scanner;

public class Main {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);

        while(in.hasNext()){
            solution(in);
        }
    }

    /**
     * 数学法: 拆分
     * 127 和 12
     * 12712 = 12700+12
     * @param in
     */
    private static void solution(Scanner in){
        int n = in.nextInt();

        int[] nums = new int[n];
        // 统计个数
        int[][] count = new int[11][7];
        for(int i=0; i<n; i++) {
            nums[i] = in.nextInt();
            count[String.valueOf(nums[i]).length()][nums[i]%7]++;
        }

        long result = 0L;
        for(int i=0; i<n; i++) {
            int bits = String.valueOf(nums[i]).length();
            int mod = nums[i]%7;
            // 排除当前数
            count[bits][mod]--;
            long num = nums[i];
            for(int j=1; j<=10; j++){
                num *= 10;
                int currMod = (int)(num%7);
                result += count[j][(7-currMod)%7];
            }
            // 恢复当前数
            count[bits][mod]++;
        }

        System.out.println(result);
    }
}

全部评论

相关推荐

那一天的Java_J...:看工资定规模,钱多就叫大厂
点赞 评论 收藏
分享
09-18 20:41
门头沟学院 Java
要个offer怎么这...:哈哈哈哈哈哈,我也拿了0x10000000个offer,秋招温啦啦啦,好开心
我的秋招日记
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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