Sponsors

Codeforces Round #421 (Div. 2), problem: (E) Mister B and Beacons on Field Solution In C/C++

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import java.util.TreeMap;

/**
* @author Don Li
*/
public class MisterBBeaconsField {

int N = (int) 2e6 + 10;
int SQRT = (int) (Math.sqrt(N) + 0.5);

int[] f = new int[N];
long nn, mm, ss;

long ans;
int[][] fs;
List<Long> bad = new ArrayList<>();

void solve() {
for (int i = 2; i < N; i++) {
if (f[i] == 0) {
f[i] = i;
for (int j = i * i; j < N && i <= SQRT; j += i) f[j] = i;
}
}

int T = in.nextInt();
while (T– > 0) {
int[] n = new int[3], m = new int[3], s = new int[3];
for (int i = 0; i < 3; i++) n[i] = in.nextInt();
for (int i = 0; i < 3; i++) m[i] = in.nextInt();
for (int i = 0; i < 3; i++) s[i] = in.nextInt();

s[0] *= 2;
nn = (long) n[0] * n[1] * n[2];
mm = (long) m[0] * m[1] * m[2];
ss = (long) s[0] * s[1] * s[2];

ans = 0;

fs = primeFactors(s);
dfs(0, 1);

bad.clear();
int[][] fn = primeFactors(n);
for (int i = 0; i < fn.length; i++) {
long v = fn[i][0];
for (int j = 0; j < fn[i][1]; j++) {
if (ss % v != 0) {
bad.add(v);
break;
}
v *= fn[i][0];
}
}
dfs2(0, 1, 0);

out.println(ans);
}
}

// iterate all the divisors of 2*s and count the number of divisors ≤ n
void dfs(int i, long v) {
if (i == fs.length) {
if (v <= nn) ans++;
return;
}
long mul = 1;
for (int j = 0; j <= fs[i][1]; j++) {
dfs(i + 1, v * mul);
mul *= fs[i][0];
}
}

// calc the number of k (such that gcd(n,k) | 2*s and 1≤k≤m) with inclusion-exclusion principle
void dfs2(int i, long v, int cnt) {
if (i == bad.size()) {
if (cnt == 0) ans += mm / v;
else ans -= mm / v;
return;
}
dfs2(i + 1, v, cnt);
dfs2(i + 1, v * bad.get(i), cnt ^ 1);
}

int[][] primeFactors(int[] a) {
TreeMap<Integer, Integer> map = new TreeMap<>();
for (int i = 0; i < 3; i++) {
int x = a[i];
while (x > 1 && x != f[x]) {
map.put(f[x], map.getOrDefault(f[x], 0) + 1);
x /= f[x];
}
if (x > 1) map.put(x, map.getOrDefault(x, 0) + 1);
}

int k = map.keySet().size();
int[][] cnt = new int[k][2];
int p = 0;
for (int x : map.keySet()) {
cnt[p][0] = x;
cnt[p][1] = map.get(x);
p++;
}
return cnt;
}

public static void main(String[] args) {
in = new FastScanner(new BufferedReader(new InputStreamReader(System.in)));
out = new PrintWriter(System.out);
new MisterBBeaconsField().solve();
out.close();
}

static FastScanner in;
static PrintWriter out;

static class FastScanner {
BufferedReader in;
StringTokenizer st;

public FastScanner(BufferedReader in) {
this.in = in;
}

public String nextToken() {
while (st == null || !st.hasMoreTokens()) {
try {
st = new StringTokenizer(in.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
return st.nextToken();
}

public int nextInt() {
return Integer.parseInt(nextToken());
}

public long nextLong() {
return Long.parseLong(nextToken());
}

public double nextDouble() {
return Double.parseDouble(nextToken());
}
}
}

Why phone batteries fade...

The Truth About Smartphone Battery Degradation: Why Your Phone...

2025 MAC Football Week...

MAC Triumph: Miami RedHawks Silence Ball State 45-24 in...

KuCoin Strengthens Australian Presence...

KuCoin Strengthens Australian Presence with Major PGA Championship Partnership The...

The future is electrified....

The Electrified Future is Here: AI Energy Demand Outpaces...

Arc Raiders Is Discounted...

Huge Discount: Arc Raiders Drops Price on PC Ahead...

Louisiana’s top health official,...

Controversial Figure Dr. Ralph Abraham Tapped for CDC Deputy...

Why phone batteries fade after two years

The Truth About Smartphone Battery Degradation: Why Your Phone Slows Down After Two Years It's a frustrating but universal experience: after roughly two years of...

2025 MAC Football Week 15 Game Recap: Miami RedHawks 45, Ball State Cardinals 24

MAC Triumph: Miami RedHawks Silence Ball State 45-24 in Season Finale The 2025 MAC Football season concluded for the Miami RedHawks in resounding fashion, as...

KuCoin Strengthens Australian Presence with PGA Championship Activation, Reinforcing Commitment to Australia with Regulatory Milestone and Local Expansion

KuCoin Strengthens Australian Presence with Major PGA Championship Partnership The convergence of cryptocurrency and mainstream sports continues its rapid ascent, and the latest significant move...

The future is electrified. And it’s here already, while we squabble about renewables

The Electrified Future is Here: AI Energy Demand Outpaces Renewable Policy The global energy landscape is undergoing a transformation driven by two massive technological forces:...

Arc Raiders Is Discounted On PC Until December 1

Huge Discount: Arc Raiders Drops Price on PC Ahead of December 1 Deadline The annual season of deep discounts is far from over, and PC...

Louisiana’s top health official, a critic of the COVID vaccine, will be CDC deputy

Controversial Figure Dr. Ralph Abraham Tapped for CDC Deputy Director Role The landscape of federal public health leadership is poised for a dramatic shift following...

Consumer Bureau’s Bank Examiners Criticize New ‘Humility Pledge’

The ‘Humility Pledge’ Backfires: Consumer Bureau Examiners Blast New Internal Policy The Consumer Financial Protection Bureau (CFPB), the federal agency tasked with safeguarding consumers in...

Bioengineering a reversal of corneal blindness

The Dawn of Donor-Free Vision: Pandorum's 'Liquid Cornea' Breakthrough Corneal blindness remains a significant global health challenge, affecting millions whose vision loss is caused by...

Florida Man Takes His Own Life in Elaborate Suicide Plan Using a Weather Balloon

The Bizarre Case of Alan Abrahamson: Suicide by Weather Balloon The death of Alan Abrahamson in January 2018 remains one of the most perplexing and...