#include <iostream>
#include <string>
using namespace std;
int d(long long n) {
return to_string(n).length();
}
long long pow1(long long n){
if (n == 0){
return 1;
}
long long result = 1;
for(int i = 0; i < n; i++) {
result *= 10;
}
return result;
}
int main() {
long long size;
long long res = 0;
cin >> size;
long long prev = 0;
long long curr;
long long a, b, df, x;
for(long long i = 0; i < size; i++){
// cout << prev << endl;
cin >> curr;
if (curr > prev) {
prev = curr;
continue;
}
a = d(curr);
b = d(prev);
if (a == b) {
res += 1;
curr *= 10;
prev = curr;
continue;
}
df = b - a;
curr *= pow1(df);
if (curr > prev) {
res += df;
prev = curr;
continue;
} else {
if (pow1(df) - 1 > prev - curr) {
curr = prev + 1;
prev = curr;
res += df;
continue;
} else {
res += df + 1;
curr *= 10;
prev = curr;
}
}
}
cout << res;
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 | #include <iostream> #include <string> using namespace std; int d(long long n) { return to_string(n).length(); } long long pow1(long long n){ if (n == 0){ return 1; } long long result = 1; for(int i = 0; i < n; i++) { result *= 10; } return result; } int main() { long long size; long long res = 0; cin >> size; long long prev = 0; long long curr; long long a, b, df, x; for(long long i = 0; i < size; i++){ // cout << prev << endl; cin >> curr; if (curr > prev) { prev = curr; continue; } a = d(curr); b = d(prev); if (a == b) { res += 1; curr *= 10; prev = curr; continue; } df = b - a; curr *= pow1(df); if (curr > prev) { res += df; prev = curr; continue; } else { if (pow1(df) - 1 > prev - curr) { curr = prev + 1; prev = curr; res += df; continue; } else { res += df + 1; curr *= 10; prev = curr; } } } cout << res; return 0; } |
English