이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#include <iostream>
#define ll long long
#define ull unsigned ll
using namespace std;
unsigned long long prime[25001];
long par[200001];
long country[200001];
vector<long> child[200001];
unsigned long long dp[25001]={};
ull dfs(long u){
ull result = 1;
for (auto v:child[u]){
result*=dfs(v);
}
if (dp[country[u]] ==0){
dp[country[u]] = result;
}
else {
dp[country[u]] *=result;
}
result*=prime[country[u]];
return result;
}
int main(){
long j = 2;
for (long i = 1;i<=25000;i++){
bool o = false;
do
{
o = false;
for (long k = 2;k*k<=j;k++){
if (j%k == 0){
j++;
o = true;
break;
}
}
} while (o);
prime[i] = (unsigned long long) j;
j++;
}
long N,R,Q;
cin>>N>>R>>Q;
cin>>country[1];
for(long i = 2;i<=N;i++){
cin>>par[i];
child[par[i]].push_back(i);
cin>>country[i];
}
dfs(1);
for (long i = 1;i<=Q;i++){
ull j,k,answer = 0;
cin>>j>>k;
ull temp = dp[j];
ull divider = prime[k];
while (temp%divider == 0){
answer++;
temp/=divider;
}
cout<<answer<<flush;
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |