Cod sursa(job #1758643)

Utilizator akaprosAna Kapros akapros Data 17 septembrie 2016 16:23:28
Problema NumMst Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <bits/stdc++.h>
#define maxN 10000002
using namespace std;
int n, d, m;
void read()
{
    freopen("nummst.in", "r", stdin);
    scanf("%d", &n);
}
void solve()
{
    int i;
    for (i = 2; i * i <= n; ++ i)
        if (n % i == 0)
        {
            d = n / i;
            break;
        }
    if (!d)
        d = 1;
    else
        n = i;
    double ans = -1.0;
    m = 2;
    for (i = 2; i <= n; ++ i)
    {
        int r = n % i;

        double sol = 1.0 * log10f(n / i) * (i - r) + 1.0 * log10f((n / i) + 1) * r;
        if (sol > ans)
        {
            m = i;
            ans = sol;
        }
    }
}
void write()
{
    int i, r = n % m, a = (n / m);
    freopen("nummst.out", "w", stdout);
    for (i = 1; i <= m - r; ++ i)
        printf("%d ", d * a);
    for (i = 1; i <= r; ++ i)
        printf("%d ", d * (a + 1));
}
int main()
{
    read();
    solve();
    write();
    return 0;
}