Cod sursa(job #2867591)

Utilizator TeofilIacobTeo george TeofilIacob Data 10 martie 2022 14:02:04
Problema Arbori indexati binar Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.16 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("nsum.in");
ofstream g("nsum.out");
int sir[1000005],d[10]={0};
uint64_t nsum,n,m=0;
int sumacf(int64_t x)
{
    int sol=0;
    if(x==0)
        return 1;
    while(x>0)
    {
        sol++;
        x/=10;
    }
    return sol;
}
void makeSir(int x)
{
    sir[1]=8;
    sir[2]=1;
    for(int i=3;i<=x;i++)
        sir[i]=sir[i-2]+2+(i-1)%2*4;
}
void construire(int64_t &m)
{
    for(int i=1;i<=n;i++)
    {
        if(sir[i]<10)
        {
            m=m*10+sir[i];
            d[sir[i]]=1;
            continue;
        }
        else
        {
            int x=sir[i];
            while(x>0)
            {
                if(!d[x%10])
                    m=m*10+x%10;
                d[x%10]=1;
                x/=10;
            }
        }

    }
}
void shift(int64_t x)
{
    int64_t p=1,y=x;
    while(y>1)
    {
        p*=10;
        y--;
    }
    nsum=m;
    for(int i=1;i<x;i++)
    {
        m=(m%p)*10+m/p;
        nsum+=m;
    }
}
int main()
{
    f>>n;
    makeSir(n);
    m=0;
    construire(m);
    shift(n);
    g<<nsum;
    return 0;
}