Cod sursa(job #2260609)

Utilizator divianegoescuDivia Negoescu divianegoescu Data 15 octombrie 2018 11:24:18
Problema Oz Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.62 kb
#include <fstream>
#include <stdio.h>
FILE *fin=fopen("oz.in","r");
using namespace std;
ofstream fout("oz.out");

int n,i,j;
long long m,k,d;
int prime[4649];
long long v[10001];
bool c[44722];
void ciur()
{
    int i,j,nr;
    c[1]=1;
    for(i=2;i<=211;i++)
        if(c[i]==0)
            for(j=i*2;j<=44722;j+=i)
                c[j]=1;
    nr=0;
    for(i=2;i<=44722;i++)
        if(c[i]==0) prime[++nr]=i;

}
void descompuneX(long long x)
{
    int p=1;
    if(v[i]==-1)
        v[i]=1;
    if(v[j]==-1)
        v[j]=1;
    while(x>1 && prime[p]<=x/prime[p])
    {
        if(x%prime[p]==0)
        {
           // int e=0;
            long long factor=1;
            while(x%prime[p]==0)
            {
                factor*=prime[p];
                x/=prime[p];
            }
            while(v[i]%factor!=0)
                v[i]*=prime[p];
            while(v[j]%factor!=0)
                v[j]*=prime[p];
          /*  for(int t=v[i];t<=e;t++)
                v[i]*=prime[p];
            for(int t=v[j];t<=e;t++)
                v[j]*=prime[p];*/
        }
        p++;
    }
    if(x>1)
    {
        if(v[i]%x!=0)
            v[i]*=x;
        if(v[j]%x!=0)
            v[j]*=x;
    }
}
int main()
{
    ciur();
    fscanf(fin,"%d%lld",&n,&m);
    for(i=1;i<=n;i++)
        v[i]=-1;

   /* v[1]=8;
    v[3]=17;
    i=1;j=3;
    descompuneX(4);
    for(int t=1;t<=4;t++)
        fout<<v[t]<<" ";*/

    for(k=1;k<=m;k++)
    {
       fscanf(fin,"%d%d%lld",&i,&j,&d);
       descompuneX(d);
    }
    for(k=1;k<=n;k++)
        fout<<v[k]<<" ";
    return 0;
}