Cod sursa(job #10174)

Utilizator crawlerPuni Andrei Paul crawler Data 27 ianuarie 2007 22:54:09
Problema Pascal Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <stdio.h>

long x[1024],p[1024],x2[1024],p2[1024];

void trans(long m1,long v[],long y[])
 {
  for(long i=2;i<=m1;++i)
    if(m1%i==0)
     {
      ++v[0];
      y[v[0]]=i;
      while(m1%i==0)
       {
        ++v[v[0]];
        m1/=i;
       }
     }

   if(m1!=1)
    {
     y[++v[0]]=m1;
     ++v[v[0]];
    }
 }

int ver()
 {
  for(int i=1;i<=p[0];++i)
   if(p[i]^p2[i])
    return 0;
     else
   if(x[i]-x2[i]<x2[i])
    return 0;

  return 2;
 }

int main()
 {
   freopen("pascal.in","r",stdin);
   freopen("pascal.out","w",stdout);

   register long i,j,n,m,X=0,n1,m1;

   scanf("%ld%ld",&n,&m);



    
   m1=n+1;
   n1=n>>1;

   for(i=1;i<=n1;++i)
    {
     --m1;
     trans(m1,p,x);
     trans(i,p2,x2);
     X+=ver();
    }

   if(n&1)
    {
     --m1;
     trans(m1,p,x);
     trans(i,p2,x2);
     if(ver())
      ++X;
    }
    
   printf("%ld\n",X);

   return 0;
 }