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());
}
}
}

Remember James Van Der...

Remembering James Van Der Beek: A Legacy of Talent...

vibefoundry 0.1.90

Vibefoundry 0.1.90: Revolutionizing Local Data Science Workflows The data science...

TRENDS Unifies 50+ Systems...

TRENDS Collaborates with Boomi to Revolutionize Manufacturing with AI...

Does eating sugar make...

The Sweet Myth: Does Sugar Consumption Attract Mosquitoes? As the...

Do cockroaches nest in...

The Truth About Cockroaches Nesting in Your Bed It’s one...

Hollywood’s AI Bet Isn’t...

Why Hollywood's Big Bet on AI Is Turning into...

Remember James Van Der Beek by Streaming Dawson’s Creek and His Other Roles

Remembering James Van Der Beek: A Legacy of Talent and Heart The entertainment world is currently in mourning following the heartbreaking news that James Van...

vibefoundry 0.1.90

Vibefoundry 0.1.90: Revolutionizing Local Data Science Workflows The data science landscape is constantly evolving, requiring tools that can keep pace with increasingly complex workflows. The...

TRENDS Unifies 50+ Systems to Build AI-Ready Manufacturing Backbone

TRENDS Collaborates with Boomi to Revolutionize Manufacturing with AI Integration In a significant move toward digital modernization, TRENDS Promotional Products has successfully leveraged the Boomi...

Does eating sugar make mosquitoes worse?

The Sweet Myth: Does Sugar Consumption Attract Mosquitoes? As the summer heat rolls in, so do the mosquitoes. For years, a popular piece of folklore...

Do cockroaches nest in beds?

The Truth About Cockroaches Nesting in Your Bed It’s one of the most unsettling thoughts imaginable: finding pests in the place you seek rest and...

Hollywood’s AI Bet Isn’t Paying Off

Why Hollywood's Big Bet on AI Is Turning into a Box Office Flop The convergence of Artificial Intelligence and cinema was once touted as the...

How far can a buck smell?

The Scent-Sational Truth: How Far Can a Buck Smell? For wildlife enthusiasts and dedicated hunters, understanding the sensory world of the whitetail deer is crucial....

Google’s Gemini 3 Release Won Over More Than 100 Million New Active Users

Google Gemini 3 Racks Up 100 Million New Active Users, Challenging ChatGPT's Dominance The artificial intelligence landscape is witnessing a seismic shift, confirmed by new...

Nvidia nears deal to invest $25.4 billion in OpenAI funding round

Nvidia Nears Historic $25.4 Billion Investment in OpenAI Funding Round The landscape of artificial intelligence is poised for another seismic shift as reports indicate that...