Cod sursa(job #1011940)

Utilizator diana97Diana Ghinea diana97 Data 17 octombrie 2013 19:37:57
Problema Pascal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream f ("pascal.in");
ofstream g ("pascal.out");

int r, d, v[7];

void citeste ()
{    f>>r>>d;}

void valoare (int n, int m)
{
    while (!(n%2)) {v[2]++; n=n/2;}
    while (!(n%3)) {v[3]++; n=n/3;}
    while (!(n%5)) {v[5]++; n=n/5;}
    while (!(m%2)) {v[2]--; m=m/2;}
    while (!(m%3)) {v[3]--; m=m/3;}
    while (!(m%5)) {v[5]--; m=m/5;}
}

int impartire ()
{
    if (d==4) {if (v[2]>=2) return 1;}
    else
    if (d==6) {if (v[2] && v[3]) return 1;}
    else if (v[d]) return 1;
    return 0;
}

void rezolva ()
{
    int l=r/2, k=r, swag=0;
    for (int i=1; i<=l; i++)
    {
        valoare (r, i);
        if (impartire ()) swag+=2;
        r--;
    }
    if (impartire () && k%2==0) swag--;
    g<<swag<<'\n';
}

int main ()
{
    citeste ();
    rezolva ();
    return 0;
}