#include<bits/stdc++.h>
#define fr front()
#define f first
#define mp make_pair
using namespace std;
int j,n;
long long wynik;
string s,last,zera;
ifstream we;
int wiekszy(string a,string b)
{
for(int x=0;x<a.size();x++)
{
if(a[x]>b[x])return 1;
else if(b[x]>a[x])return 0;
}
return 0;
}
int niedziewiec(string a,string b)
{
for(int x=a.size();x<b.size();x++)
{
if(b[x]!='9')return 1;
}
return 0;
}
int main()
{
ios_base::sync_with_stdio(0);
cin>>n;
for(int i=0;i<=1000200;i++)zera+='0';
for(int i=1;i<=n;i++)
{
cin>>s;
if(i==1){last=s;continue;}
else if(s.size()>last.size()){last=s;continue;}
else if(wiekszy(s,last)){wynik+=last.size()-s.size();s+=zera.substr(0,last.size()-s.size());last=s;continue;}
else if(s==(last.substr(0,s.size()))&&niedziewiec(s,last))
{
wynik+=last.size()-s.size();
s=last;
j=s.size()-1;
while(1)
{
if(s[j]=='9'){s[j]='0';j--;}
else {s[j]++;break;}
}
last=s;
}
else
{
wynik+=last.size()-s.size()+1;s+=zera.substr(0,last.size()-s.size()+1);last=s;continue;
}
}
cout<<wynik;
}
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 | #include<bits/stdc++.h> #define fr front() #define f first #define mp make_pair using namespace std; int j,n; long long wynik; string s,last,zera; ifstream we; int wiekszy(string a,string b) { for(int x=0;x<a.size();x++) { if(a[x]>b[x])return 1; else if(b[x]>a[x])return 0; } return 0; } int niedziewiec(string a,string b) { for(int x=a.size();x<b.size();x++) { if(b[x]!='9')return 1; } return 0; } int main() { ios_base::sync_with_stdio(0); cin>>n; for(int i=0;i<=1000200;i++)zera+='0'; for(int i=1;i<=n;i++) { cin>>s; if(i==1){last=s;continue;} else if(s.size()>last.size()){last=s;continue;} else if(wiekszy(s,last)){wynik+=last.size()-s.size();s+=zera.substr(0,last.size()-s.size());last=s;continue;} else if(s==(last.substr(0,s.size()))&&niedziewiec(s,last)) { wynik+=last.size()-s.size(); s=last; j=s.size()-1; while(1) { if(s[j]=='9'){s[j]='0';j--;} else {s[j]++;break;} } last=s; } else { wynik+=last.size()-s.size()+1;s+=zera.substr(0,last.size()-s.size()+1);last=s;continue; } } cout<<wynik; } |
English