Cod sursa(job #1945847)

Utilizator SergiududaDUDA Sergiu Sergiududa Data 29 martie 2017 18:30:43
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <stdio.h>
#include <stdlib.h>

using namespace std;

int main(void)
{
    int* v;
    int i,n;
    int contor;


    FILE* f = fopen("fractii.in","rt");
    FILE* g = fopen("fractii.out","wt");

    fscanf(f,"%d",&n);

    int nr_fractii = n;     /// Pleaca de la n deoarece intotdeauna vom avea 1/n ireductibil

    /// Alocam dinamic vectorul v & initializam 0
    v = (int*)malloc(sizeof(int)*n+1);
    for(i = 0; i <= n; i++)
        v[i] = 0;
    for (i = 2; i <= n; i++)
    {

        if(v[i] == 0)
        {
            contor = 0;
            for(int j = 2*i; j<=n; j += i)
            {
                contor++;

                if(v[j] == 0)
                    v[j] += contor;

                else
                    v[j]++;

            }
            /// Avem i-1 fractii supra_unitare toate ireductibile
            nr_fractii += i - 1;

            /// Avem n - i + 1 fractii subunitarea, insa dintre acestea reductibile sunt contor
            nr_fractii += (n - i) - contor;



        }
        if(v[i] != 0)
        {
            /// Avem i - 1 fractii supraunitare dintre care v[i] fractii reductibile
            nr_fractii += i - 1 - v[i];

            nr_fractii += (n / i - 1) * (v[i] + 1);


        }
    }

    fprintf(g,"%d",nr_fractii);
}