#include <bits/stdc++.h> using namespace std; const int N=200005; int tab[N]; vector<short>Dec(int F){ vector<short>V; int X; while(F){ X=F%10; V.push_back(X); F=F/10; } return V; } int main() { long long W=0; int K; scanf("%d",&K); for(int i=0;i<K;i++){ scanf("%d",&tab[i]); } vector<short>v; v=Dec(tab[0]); reverse(v.begin(),v.end()); for(int i=1;i<K;i++){ vector<short>x; x=Dec(tab[i]); if(v.size()>=x.size()){ reverse(x.begin(),x.end()); int k=0; int h=0; while(!k && (h<x.size())){ if(v[h]<x[h]){ k=1; } if(v[h]>x[h]){ k=2; } if(v[h]==x[h]){ h++; } } if(k==1){ while(v.size()!=x.size()){ x.push_back(0); W++; } } if(k==2){ while(v.size()!=x.size()){ x.push_back(0); W++; } x.push_back(0); W++; } if(!k){ int o=x.size(); for(int j=o;j<v.size();j++){ x.push_back(v[j]); W++; } int kk=1; for(int j=v.size();j>=0;j++){ x[j]=v[j]+kk; if(x[j]){ kk=0; } } if(kk){ reverse(x.begin(),x.end()); x.push_back(1); reverse(x.begin(),x.end()); W++; } } v=x; } } cout<<W; }
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 | #include <bits/stdc++.h> using namespace std; const int N=200005; int tab[N]; vector<short>Dec(int F){ vector<short>V; int X; while(F){ X=F%10; V.push_back(X); F=F/10; } return V; } int main() { long long W=0; int K; scanf("%d",&K); for(int i=0;i<K;i++){ scanf("%d",&tab[i]); } vector<short>v; v=Dec(tab[0]); reverse(v.begin(),v.end()); for(int i=1;i<K;i++){ vector<short>x; x=Dec(tab[i]); if(v.size()>=x.size()){ reverse(x.begin(),x.end()); int k=0; int h=0; while(!k && (h<x.size())){ if(v[h]<x[h]){ k=1; } if(v[h]>x[h]){ k=2; } if(v[h]==x[h]){ h++; } } if(k==1){ while(v.size()!=x.size()){ x.push_back(0); W++; } } if(k==2){ while(v.size()!=x.size()){ x.push_back(0); W++; } x.push_back(0); W++; } if(!k){ int o=x.size(); for(int j=o;j<v.size();j++){ x.push_back(v[j]); W++; } int kk=1; for(int j=v.size();j>=0;j++){ x[j]=v[j]+kk; if(x[j]){ kk=0; } } if(kk){ reverse(x.begin(),x.end()); x.push_back(1); reverse(x.begin(),x.end()); W++; } } v=x; } } cout<<W; } |