#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; } |