#include<bits/stdc++.h> #define ll long long #define pb push_back using namespace std; ll pot[100]; ll wy,st; vector<ll> rozk(ll x){ vector<ll> v; while(x){ v.push_back(x%10); x/=10; } reverse(v.begin(),v.end()); return v; } ll dl(ll x){ return rozk(x).size(); } ll por(vector<ll> v1,vector<ll> v2){ for(int i=0;i<min(v1.size(),v2.size());i++){ if(v1[i]<v2[i]){ return -1; } if(v1[i]>v2[i]){ return 1; } } return 0; } ll trba(vector<ll> vec){ ll wy=0; for(int i=0;i<vec.size();i++){ wy*=10; wy+=vec[i]; } return wy; } ll roz1(ll wcz,ll poz){ wcz++; vector<ll> vw=rozk(wcz),vp=rozk(poz); if(vp.size()>vw.size()){ return poz; } ll war=por(vp,vw); if(war==0){ wy+=vw.size()-vp.size(); return wcz; } while(vw.size()>vp.size()){ wy++; vp.pb(0); } if(war==-1){ wy++; vp.pb(0); } return trba(vp); } ll mnie(ll sta,ll no){ vector<ll> vsta=rozk(sta),vno=rozk(no); while(vsta.size()<vno.size()){ vsta.pb(0); } ll war=por(vsta,vno); if(war==0){ return sta; } if(war==1){ st++; return no; } return no; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); ll n,i,j,a,b,ter; pot[0]=1; for(i=1;i<100;i++){ pot[i]=pot[i-1]*10; } cin >>n; cin >>ter; ll fa=0; for(i=1;i<n;i++){ cin >>a; if(fa==0){ ter=roz1(ter,a); if(ter>=pot[9+6]){ fa=1; st=rozk(ter).size(); vector<ll> r=rozk(ter); r.pop_back(); r.pop_back(); r.pop_back(); r.pop_back(); r.pop_back(); r.pop_back(); ter=trba(r); } } else{ ter=mnie(ter,a); wy+=st-dl(a); } //cout <<ter <<"\n"; } cout <<wy; }
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 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | #include<bits/stdc++.h> #define ll long long #define pb push_back using namespace std; ll pot[100]; ll wy,st; vector<ll> rozk(ll x){ vector<ll> v; while(x){ v.push_back(x%10); x/=10; } reverse(v.begin(),v.end()); return v; } ll dl(ll x){ return rozk(x).size(); } ll por(vector<ll> v1,vector<ll> v2){ for(int i=0;i<min(v1.size(),v2.size());i++){ if(v1[i]<v2[i]){ return -1; } if(v1[i]>v2[i]){ return 1; } } return 0; } ll trba(vector<ll> vec){ ll wy=0; for(int i=0;i<vec.size();i++){ wy*=10; wy+=vec[i]; } return wy; } ll roz1(ll wcz,ll poz){ wcz++; vector<ll> vw=rozk(wcz),vp=rozk(poz); if(vp.size()>vw.size()){ return poz; } ll war=por(vp,vw); if(war==0){ wy+=vw.size()-vp.size(); return wcz; } while(vw.size()>vp.size()){ wy++; vp.pb(0); } if(war==-1){ wy++; vp.pb(0); } return trba(vp); } ll mnie(ll sta,ll no){ vector<ll> vsta=rozk(sta),vno=rozk(no); while(vsta.size()<vno.size()){ vsta.pb(0); } ll war=por(vsta,vno); if(war==0){ return sta; } if(war==1){ st++; return no; } return no; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); ll n,i,j,a,b,ter; pot[0]=1; for(i=1;i<100;i++){ pot[i]=pot[i-1]*10; } cin >>n; cin >>ter; ll fa=0; for(i=1;i<n;i++){ cin >>a; if(fa==0){ ter=roz1(ter,a); if(ter>=pot[9+6]){ fa=1; st=rozk(ter).size(); vector<ll> r=rozk(ter); r.pop_back(); r.pop_back(); r.pop_back(); r.pop_back(); r.pop_back(); r.pop_back(); ter=trba(r); } } else{ ter=mnie(ter,a); wy+=st-dl(a); } //cout <<ter <<"\n"; } cout <<wy; } |