#include <iostream>
using namespace std;
const int NMAX=1e5;
int n, m, q, union_day[NMAX+5], t[NMAX+5];
int tatal (int nod)
{
return t[nod]==0?nod:tatal (t[nod]);
}
void join (int a, int b, int d)
{
a=tatal (a);
b=tatal (b);
if (a==b)
return;
t[a]=b;
union_day[a]=d;
}
int query (int x, int y)
{
int ret=0;
while (x!=y)
{
if (union_day[x]>union_day[y])
ret=union_day[x], x=t[x];
else
ret=union_day[y], y=t[y];
}
return ret;
}
int main ()
{
ios :: sync_with_stdio (0);
cin.tie (nullptr);
cin >> n >> m >> q;
for (int i=m;i>=1;i--)
{
for (int j=i+i;j<=n;j+=i)
{
join (i, j, i);
}
}
while (q--)
{
int x, y;
cin >> x >> y;
cout << m+1-query (x, y) << "\n";
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |