Cod sursa(job #2500654)

Utilizator DanutAldeaDanut Aldea DanutAldea Data 28 noiembrie 2019 13:57:22
Problema Pascal Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.02 kb
#include <fstream>
#include <iostream>
using namespace std;

ifstream fin("pascal.in");
ofstream fout("pascal.out");

int n,m,d,fact[6][5000001],p[6][5000001],i,j,jum,e2,e3,e5,cnt;

int main(){
    fin>>n>>d;

    ///calculam fact[n]


    for(i=2;i<=n;i++){
        p[2][i]=p[2][i/2]+1;
        p[3][i]=p[3][i/3]+1;
        p[5][i]=p[5][i/5]+1;

        fact[2][i]=fact[2][i-1]+p[2][i];
        fact[3][i]=fact[3][i-1]+p[3][i];
        fact[5][i]=fact[5][i-1]+p[5][i];
    }
    cout<<"*";


    /// linia n coloana i
    if(d==2){
        for(i=1;i<=n/2;i++){
            if(fact[2][n]-fact[2][i]-fact[2][n-i]>0)
                cnt+=2;
        }

        i--;
        if(n%2==0){
            if(fact[2][n]-fact[2][i]-fact[2][n-i]>0)
                cnt--;
        }
    }

    if(d==3){
        for(i=1;i<=n/2;i++){
            if(fact[3][n]-fact[3][i]-fact[3][n-i]>0)
                cnt+=2;
        }

        i--;
        if(n%2==0){
            if(fact[3][n]-fact[3][i]-fact[3][n-i]>0)
                cnt--;
        }
    }

    if(d==5){
        for(i=1;i<=n/2;i++){
            if(fact[5][n]-fact[5][i]-fact[5][n-i]>0)
                cnt+=2;
        }

        i--;
        if(n%2==0){
            if(fact[5][n]-fact[5][i]-fact[5][n-i]>0)
                cnt--;
        }
    }

    if(d==4){
        for(i=1;i<=n/2;i++){
            if(fact[2][n]-fact[2][i]-fact[2][n-i]>1)
                cnt+=2;
        }

        i--;
        if(n%2==0){
            if(fact[2][n]-fact[2][i]-fact[2][n-i]>1)
                cnt--;
        }
    }

    if(d==6){
        for(i=1;i<=n/2;i++){
            if(fact[2][n]-fact[2][i]-fact[2][n-i]>0 && fact[3][n]-fact[3][i]-fact[3][n-i]>0)
                cnt+=2;
        }

        i--;
        if(n%2==0){
            if(fact[2][n]-fact[2][i]-fact[2][n-i]>0 && fact[3][n]-fact[3][i]-fact[3][n-i]>0)
                cnt--;
        }
    }

    for(i=1;i<=n;i++)
        cout<<fact[2][i]<<" ";

    fout<<cnt;

    return 0;
}