#include <cstdio> #include <cstring> #include <algorithm> int n, i=1, roz2=0, pom,roz,ok,ile; long long a, b,il,wyn; char s[20], s2[20],znak; bool czy; int main() { scanf("%d", &n); while(b<(long long)1000000000000000&&i<=n) { scanf("%s", s); roz=std::strlen(s); pom=roz; a=atoi(s); while(a<=b) { a*=10; a+=9; s[roz]='9'; roz++; } b=0; if(roz>roz2) { for(int j=0; j<pom; j++) { b*=10; b+=s[j]-'0'; s2[j]=s[j]; } for(int j=pom; j<roz; j++) { b*=10; s2[j]='0'; } } else { czy=false; for(int j=0; j<pom; j++) { if(s[j]>s2[j])czy=true; b*=10; b+=s[j]-'0'; s2[j]=s[j]; } if(!czy) for(int j=roz-1; j>=pom; j--) { if(s2[j]<'9') { czy=true; s2[j]++; break; } else s2[j]='0'; } else for(int j=roz-1; j>=pom; j--)s2[j]='0'; for(int j=pom; j<roz; j++) { b*=10; b+=s2[j]-'0'; } } roz2=roz; wyn+=roz-pom; i++; } ile=roz2; while(i<=n) { scanf("%s", s); roz=std::strlen(s); ok=0; pom=roz; for(int j=0; j<roz; j++) { if(s[j]>s2[j]) { ok=1; break; } if(s[j]<s2[j]) { ok=-1; break; } } if(ok==1) while(roz<=10)s[roz++]='0'; if(ok==-1) { ile++; while(roz<=10)s[roz++]='0'; } if(ok==0) while(roz<=10) { s[roz]=s2[roz]; roz++; } wyn+=ile-pom; for(int j=0; j<=10; j++)s2[j]=s[j]; i++; } printf("%lld", wyn); }
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 | #include <cstdio> #include <cstring> #include <algorithm> int n, i=1, roz2=0, pom,roz,ok,ile; long long a, b,il,wyn; char s[20], s2[20],znak; bool czy; int main() { scanf("%d", &n); while(b<(long long)1000000000000000&&i<=n) { scanf("%s", s); roz=std::strlen(s); pom=roz; a=atoi(s); while(a<=b) { a*=10; a+=9; s[roz]='9'; roz++; } b=0; if(roz>roz2) { for(int j=0; j<pom; j++) { b*=10; b+=s[j]-'0'; s2[j]=s[j]; } for(int j=pom; j<roz; j++) { b*=10; s2[j]='0'; } } else { czy=false; for(int j=0; j<pom; j++) { if(s[j]>s2[j])czy=true; b*=10; b+=s[j]-'0'; s2[j]=s[j]; } if(!czy) for(int j=roz-1; j>=pom; j--) { if(s2[j]<'9') { czy=true; s2[j]++; break; } else s2[j]='0'; } else for(int j=roz-1; j>=pom; j--)s2[j]='0'; for(int j=pom; j<roz; j++) { b*=10; b+=s2[j]-'0'; } } roz2=roz; wyn+=roz-pom; i++; } ile=roz2; while(i<=n) { scanf("%s", s); roz=std::strlen(s); ok=0; pom=roz; for(int j=0; j<roz; j++) { if(s[j]>s2[j]) { ok=1; break; } if(s[j]<s2[j]) { ok=-1; break; } } if(ok==1) while(roz<=10)s[roz++]='0'; if(ok==-1) { ile++; while(roz<=10)s[roz++]='0'; } if(ok==0) while(roz<=10) { s[roz]=s2[roz]; roz++; } wyn+=ile-pom; for(int j=0; j<=10; j++)s2[j]=s[j]; i++; } printf("%lld", wyn); } |