1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include<iostream>
#include<vector>
#include<cmath>
using namespace std;

struct liczba
{
    long long podstawa;
    int wykladnik;
};

long long pot(int a)
{
    long long pom=1;
    for(int i=0;i<a;i++)
    {
        pom*=10;
    }
    return pom;
}

int main()
{
    int N,licz=0,pom;
    int delta1=0,delta2=0;
    liczba b;
    int k=0,l=0;
    cin>>N;
    long long a;
    vector<liczba>W;
    for(int i=0;i<N;i++)
    {
        cin>>a;
        pom=floor(log10(a));
        b.podstawa=a;
        b.wykladnik=pom;
        W.push_back(b);
    }

    for(int i=1;i<N;i++)
    {
        delta1=0;
        k=0;
        if(W[i].wykladnik<W[i-1].wykladnik)
        {
            delta1=W[i].wykladnik;
            while(W[i].wykladnik<W[i-1].wykladnik)
            {
                licz++;
                W[i].wykladnik++;
            }
            delta1=W[i].wykladnik-delta1;
            if(W[i].podstawa*pot(delta1)+9-W[i-1].podstawa*pot(delta2)-l<=0)
            {
                licz++;
                W[i].wykladnik++;
                delta1++;
            }else while(W[i].podstawa*pot(delta1)+k-W[i-1].podstawa*pot(delta2)-l<=0){k++;}
        }else if(W[i].wykladnik==W[i-1].wykladnik)
                {
                    if(W[i].podstawa*pot(delta1)-W[i-1].podstawa*pot(delta2)-l<=0)
                    {
                        licz++;
                        W[i].wykladnik++;
                        delta1++;
                    }
                }
        delta2=delta1;
        l=k;
    }
    cout<<licz<<endl;
    return 0;

}