欢迎光临散文网 会员登陆 & 注册

牛客竞赛题目讲解_孤独的树

2022-05-01 10:37 作者:Clayton_Zhou  | 我要投稿

// https://ac.nowcoder.com/acm/contest/11225/F


#include "stdafx.h"

//#include <bits/stdc++.h>

#include <algorithm>

#include <iostream>

#include <cstring>

 #include <vector>



using namespace std;

int n,i,j;

 

int a[100005]={0,32,2,2,2,2};

int edge[32][2]={

1, 2,

1, 3,

1, 4,

1,5

};


vector<int> v[100005];

int ans;

 int gcd(int a,int b)

{    

    if(a%b==0) 

    return b;        

    else return (gcd(b,a%b));

}

int pcount(int t)

{

if(t==1)return 0;

int pc=0; 

  for(int i=2;t>1;i++)               

                while(t%i==0)t/=i,pc++;         

  return pc;

}

void dfs(int x,int fa){

    for(int y:v[x])if(y!=fa){

        dfs(y,x);

        int t=gcd(a[x],a[y]);

        ans+=pcount(t);

        a[x]/=t;

cout<<" a[x]="<<a[x]<<"  t="<<t<<endl;

    }

}

int main()

{

n=5;

    //cin>>n;

   // for(int i=1;i<=n;i++)cin>>a[i]; 

    for(int i=1;i<n;i++){

        int x,y;

x=edge[i-1][0];

y=edge[i-1][1];

        //cin>>x>>y;

        v[x].push_back(y);

        v[y].push_back(x);

    }

     dfs(1,0);

    cout<<ans<<endl;

    return 0;

}


牛客竞赛题目讲解_孤独的树的评论 (共 条)

分享到微博请遵守国家法律