Cod sursa(job #585822)

Utilizator palcuiealexAlex Palcuie palcuiealex Data 30 aprilie 2011 12:03:06
Problema NumMst Scor 9
Compilator cpp Status done
Runda Algoritmiada 2011, Runda Finală, Clasele 10-12 Marime 0.97 kb
#include <iostream>
#include <cstdio>
#include <bitset>
#include <cstdlib>

using namespace std;

const int NMAX = 10000004;
bitset<NMAX> isNotPrim;
int n;

void read_problem(){
    freopen("nummst.in","r",stdin);
    freopen("nummst.out","w",stdout);
    scanf("%d",&n);
}

void print_solution(int x){
    int sGramada = n / x;
    for (int i=0; i<x; ++i)
        printf("%d ",sGramada);
    exit(0);
}

void eratosthene(){
    //Divisors of 2
    for (int i=2; i<n; i+=2)
        isNotPrim[i] = true;
    for (int i=3; i<n; ++i)
        if (!isNotPrim[i]){
            if (n%i == 0)
                print_solution(i);
            static int j;
            for(j=i;j<n;j+=i)
                isNotPrim[j] = true;
        }
}

int main()
{
    read_problem();
    if (n%2 == 0){
        printf("%d %d\n",n/2,n/2);
        exit(0);
    }
    else
        eratosthene();
    int div2 = n/2;
    printf("%d %d\n",div2,n-div2);
    return 0;
}