Cod sursa(job #1288995)

Utilizator pepsiM4A1Ozturk Arif pepsiM4A1 Data 9 decembrie 2014 12:43:56
Problema Principiul includerii si excluderii Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.87 kb
#include <stdio.h>
#include <cmath>
int div[100000],pos;
bool schimb[100000],ciur[100006];
int a,b,temp,tx=0;
FILE *fin,*fout;
void ver()
{
    int ct=0;
    int mult=1;
    for(int i=1;i<pos;i++)
    {
            if(schimb[i]==1)
            {
                            ct++;
                            mult*=div[i];
            }
    }
    if(ct==0) return ;
    if(ct%2==0) tx-=a/mult;
    else if(ct%2!=0) tx+=a/mult;
}
void bcs(int pt)
{
     if(pt==pos) ver();
     else
     {
         for(int i=0;i<=1;i++)
         {
                 schimb[pt]=i;
                 bcs(pt+1);
         }
     }
}
int main()
{
    for(int i=2;i<=100005;i++)
    {
            if(ciur[i]==0) 
            {
                           for(int j=i;j<100005/i;j++) 
                           {
                                   ciur[i*j]=1;
                           }
            }
    }
    fin=fopen("pinex.in","r");
    fout=fopen("pinex.out","w");
    int n;
    fscanf(fin,"%d",&n);
    for(int i=1;i<=n;i++)
    {
            pos=1;
            fscanf(fin,"%d %d",&a,&b);
            if(ciur[b]==0)
            {
                          div[pos]=b;
                          pos++;
            }
            else
            {
                for(int i=2;;i++)
                {
                        if(b==1) break;
                        if(ciur[i]==0)
                        {
                                     if(b%i==0)
                                     {
                                               div[pos]=i;
                                               pos++;
                                               while(b%i==0) b/=i;
                                     }
                        }
                }
            }
            tx=0;
            bcs(1);
            fprintf(fout,"%d\n",a-tx);
    }
}