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
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <bits/stdc++.h>
using namespace std;
#define sz size()
#define pb push_back
#define mp make_pair
typedef long long ll;
const ll M = 10e7 + 7;
const ll maxn = 200002;
const ll P = 1e9+7;
ll a,b,c,d,n,m,ans,mod;
string aktualny;
string liczby[maxn];
void sprawdz(int a){
	string s1,s2;
	s1=liczby[a];
	s2=liczby[a+1];
	if(s1.sz==s2.sz){
		int i=0;
		while(i<s1.sz&&s1[i]==s2[i]){
			i++;
		}
		if(i==s1.sz||s1[i]>s2[i]){ //przypadek kiedy slowa sa rownej dlugosci
			liczby[a+1]+='0';
			ans++;
		}
	}
	else{
		if(s1.sz>s2.sz){ //s1 jest wieksze
			ans+=(s1.sz-s2.sz); //napewno trzeba uzupelnic
			int i=0;
			int ile_rownych = 0;
			while(i<s2.sz&&s1[i]==s2[i]){
				ile_rownych++;
				i++;
			}
			//cout<<"s1 i s2 roznia sie na pozycji "<<i<<endl;
			if(ile_rownych==s2.sz){ //przypadek kiedy czlon s2 jest rowny poczatkowemu czlonowi s1
				//cout<<"czlony "<<s1<<" "<<s2<<" sa sobie rowne "<<endl;
				int j = s1.sz-1;
				while(j>=s2.sz&&s1[j]=='9'){
					j--;
				}
				if(j==s2.sz-1){ //w koncowke s1 same 9
					//cout<<"same 9 ma w koncowkce "<<s1<<endl;
					while(s2.sz<=s1.sz)
						s2+='0';
					liczby[a+1]=s2;
					ans++;
				}
				else{
					s1[j]=char(s1[j]+1);
					for(int k=s1.sz; k>j; k--){
						s1[k]='0';
					}
					liczby[a+1]=s1;
				}
			}
			else{
				bool siemka = 0;
				if(s1[i]>s2[i]) siemka=1;
				while(s2.sz<s1.sz)
					s2+='0';
				if(siemka){ //czlons s1 jest wiekszy od czlona s2 trzba zwiekszyc wykladnik 10
					//cout<<"czlon "<<liczby[a]<<" jest wiekszy od czlona "<<liczby[a+1]<<endl;
					s2+='0';
					ans++;
				}
				else{
					//cout<<"CZLON "<<liczby[a]<<" jest mniejszy od człona "<<liczby[a+1]<<endl;
				}
				liczby[a+1]=s2;
			}
		}
	}
}
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cin>>n;
    for(int i=0; i<n; i++) cin>>liczby[i];
    for(int i=0; i<n-1; i++){
    	sprawdz(i);
    }
    //for(int i=0; i<n; i++) //cout<<liczby[i]<<endl;
    cout<<ans;
    return 0;
}