Pagini recente » Cod sursa (job #250035) | Monitorul de evaluare | Cod sursa (job #616359) | Cod sursa (job #49527) | Cod sursa (job #2867591)
#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;
}