#include<algorithm> #include<cstdio> #include<iostream> #include<vector> using namespace std; long long tab[19]= {1}; int ile_cyfr(long long n){ int w = 0; while(n > 0) { n /= 10; w++; } return w; } int main() { //ios_base::sync_with_stdio(0); int n, i, j, d1, d2, zera = 0; for(i = 1;i < 19; i++) tab[i] = tab[i-1] * 10; long long wyn = 0, a1, a2; scanf("%d",&n); n--; scanf("%lld",&a1); d1 = ile_cyfr(a1); while(n--){ scanf("%lld",&a2); if (a1 < 1e15) { d2 = ile_cyfr(a2); if (d2 < d1){ if(a2 > a1/tab[d1 - d2]){ wyn += d1 - d2; a2 *= tab[d1-d2]; } else if (a2 == a1/tab[d1- d2]){ if(a2 == (a1 + 1)/tab[d1- d2]){ a2 = a1 + 1; wyn += d1-d2; } else{ wyn += d1 - d2 + 1; a2 *= tab[d1-d2 + 1]; } } else { wyn += d1 - d2 + 1; a2 *= tab[d1-d2 + 1]; } } else if (d2 == d1 && a2 <= a1){ wyn += 1; a2 *= 10; } a1 = a2; d1 = ile_cyfr(a1); //cout << a1 << endl<<endl; } else { d2 = ile_cyfr(a2); if(a2 > a1/tab[d1 - d2]){ wyn += d1 + zera - d2; a1 = a2*tab[d1 - d2] ; } else if (a2 == a1/tab[d1- d2]){ wyn += d1 + zera - d2; } else{ zera++; wyn += d1 + zera - d2 ; a1 = a2*tab[d1 - d2] ; } //cout<<a1<<s<<endl<<endl; } } printf("%lld",wyn); return 0; }
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 | #include<algorithm> #include<cstdio> #include<iostream> #include<vector> using namespace std; long long tab[19]= {1}; int ile_cyfr(long long n){ int w = 0; while(n > 0) { n /= 10; w++; } return w; } int main() { //ios_base::sync_with_stdio(0); int n, i, j, d1, d2, zera = 0; for(i = 1;i < 19; i++) tab[i] = tab[i-1] * 10; long long wyn = 0, a1, a2; scanf("%d",&n); n--; scanf("%lld",&a1); d1 = ile_cyfr(a1); while(n--){ scanf("%lld",&a2); if (a1 < 1e15) { d2 = ile_cyfr(a2); if (d2 < d1){ if(a2 > a1/tab[d1 - d2]){ wyn += d1 - d2; a2 *= tab[d1-d2]; } else if (a2 == a1/tab[d1- d2]){ if(a2 == (a1 + 1)/tab[d1- d2]){ a2 = a1 + 1; wyn += d1-d2; } else{ wyn += d1 - d2 + 1; a2 *= tab[d1-d2 + 1]; } } else { wyn += d1 - d2 + 1; a2 *= tab[d1-d2 + 1]; } } else if (d2 == d1 && a2 <= a1){ wyn += 1; a2 *= 10; } a1 = a2; d1 = ile_cyfr(a1); //cout << a1 << endl<<endl; } else { d2 = ile_cyfr(a2); if(a2 > a1/tab[d1 - d2]){ wyn += d1 + zera - d2; a1 = a2*tab[d1 - d2] ; } else if (a2 == a1/tab[d1- d2]){ wyn += d1 + zera - d2; } else{ zera++; wyn += d1 + zera - d2 ; a1 = a2*tab[d1 - d2] ; } //cout<<a1<<s<<endl<<endl; } } printf("%lld",wyn); return 0; } |