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