Cod sursa(job #2099819)

Utilizator laurpoppopescu laurentiu laurpop Data 4 ianuarie 2018 18:31:17
Problema Pascal Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
using namespace std;
ifstream f("pascal.in");
ofstream g("pascal.out");
int i,d,j,nr,v[4],p[4],x[4],k,ok,sol;
int main()
{
    f>>i>>d;
    for(j=2;j*j<=d;j++)
        if(d%j==0){
            nr++;
            v[nr]=j;
            while(d%j==0){
                p[nr]++;
                d/=j;
            }
        }
    if(d!=1){
        nr++;
        v[nr]=d;
        p[nr]=1;
    }
    for(j=0;j<(i+1)/2;j++){
        ok=1;
        for(k=1;k<=nr;k++)
            if(x[k]<p[k])
                ok=0;
         sol+=2*ok;
         for(k=1;k<=nr;k++){
            int y=i-j;
            while(y%v[k]==0){
                x[k]++;
                y/=v[k];
            }
            y=j+1;
            while(y%v[k]==0){
                x[k]--;
                y/=v[k];
            }
         }
    }
    if(i%2==0){
        ok=1;
        for(j=1;j<=nr;j++)
            if(x[j]<p[j])
                ok=0;
        sol+=ok;
    }
    g<<sol;
    return 0;
}