zoukankan      html  css  js  c++  java
  • Java实现 蓝桥杯 算法训练 Number Challenge(暴力)

    试题 算法训练 Number Challenge

    资源限制
    时间限制:3.0s 内存限制:512.0MB
    问题描述
      定义d(n)为n的约数个数。现在,你有三个数a,b,c。你的任务是计算下面式子modulo 1073741824 (2^30)的值。在这里插入图片描述
    输入格式
      三个正整数a,b,c。
    输出格式
      一个数,即上面式子modulo 1073741824 (2^30)的值。
    样例输入
    2 2 2
    样例输出
    20
    数据规模和约定
      a, b , c (1 ≤ a, b, c ≤ 2000)

     
    
    import java.util.Scanner;
    
    public class Main {
    
    	// 转自:	https://blog.csdn.net/a1439775520   
    	static int MAX = 2005;
    	static int MOD = 1 << 30;
    	static int[][] gd = new int[MAX][MAX];
    	static int[] p = new int[MAX];
    	static int[] mob = new int[MAX];
    	static boolean[] noprime = new boolean[MAX];
    
    	static void Mobius() {
    		int pnum = 0;
    		mob[1] = 1;
    		for (int i = 2; i < MAX; i++) {
    			if (!noprime[i]) {
    				p[pnum++] = i;
    				mob[i] = -1;
    			}
    			for (int j = 0; j < pnum && i * p[j] < MAX; j++) {
    				noprime[i * p[j]] = true;
    				if (i % p[j] == 0) {
    					mob[i * p[j]] = 0;
    					break;
    				}
    				mob[i * p[j]] = -mob[i];
    			}
    		}
    	}
    
    	static int Gcd(int a, int b) {
    		if (b == 0)
    			return a;
    		if (gd[a][b] == 1)
    			return gd[a][b];
    		return gd[a][b] = Gcd(b, a % b);
    	}
    
    	static long cal(int d, int x) {
    		long ans = 0;
    		for (int i = 1; i <= d; i++)
    			if (Gcd(i, x) == 1)
    				ans += (long) (d / i);
    		return ans;
    	}
    
    	public static void main(String[] args) {
    		Mobius();
    		int a, b, c;
    		long ans = 0l;
    		Scanner sc = new Scanner(System.in);
    		a = sc.nextInt();
    		b = sc.nextInt();
    		c = sc.nextInt();
    		sc.close();
    		for (int i = 1; i <= a; i++)
    			for (int j = 1; j <= Math.min(b, c); j++)
    				if (Gcd(i, j) == 1)
    					ans = (ans % MOD + (long) (a / i) * mob[j] * cal(b / j, i) * cal(c / j, i) % MOD) % MOD;
    		System.out.println(  ans);
    	}
    
    }
    
    
  • 相关阅读:
    ReactNative 打包 APK
    ReactNative常用命令
    ReactNative之坑:停在gradle一直出点
    Python搭建Web服务器,与Ajax交互,接收处理Get和Post请求的简易结构
    tensorflow 安装升级
    sqlserver 全库查询 带架构
    气象数据资料整理
    poj2841
    cf1430e
    cf1436d
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13074954.html
Copyright © 2011-2022 走看看