#include <iostream> #include <string> using namespace std; int AA[2][200200]; void wczytaj(int x,int i){ int j=1; int k; int tmp; while(x>0){ AA[i][j]=x%10; x=x/10; j++; } j--; AA[i][0]=j; //for(int t=0;t<=AA[i][0];t++) cout << AA[i][t] << " " ; //cout << endl; for(k=1; k<=j/2;k++){ tmp=AA[i][k]; AA[i][k]=AA[i][j+1-k]; AA[i][j+1-k]=tmp; } //for(int t=0;t<=AA[i][0];t++) cout << AA[i][t] << " " ; //cout << endl; } void DodajJeden(int i){ int wyjdz=0; int j; for(j=AA[i][0];j>0;j--){ (AA[i][j])++; if (AA[i][j]>=10){ AA[i][j]=0; } else {j=0; wyjdz=1;} } } int main () { int N; int x; int t; int j; int h; int czysamedziewiatki; int wyjdz; long long LiczbaCyfr=0; cin >> N; cin >> x; int i=0; wczytaj(x,i); //for(int t=0;t<=AA[i][0];t++) cout << AA[i][t] << " " ; //cout << "dla i=" << i << endl; for(t=1;t<N;t++){ i=1-i; cin >> x; wczytaj(x,i); wyjdz=0; if(AA[i][0]<=AA[1-i][0]){ for(j=1;j<=AA[i][0];j++){ if(AA[i][j]<AA[1-i][j]){ for(h=AA[i][0]+1;h<=AA[1-i][0]+1;h++){AA[i][h]=0;} LiczbaCyfr=(long long)LiczbaCyfr+(AA[1-i][0]+1)-(AA[i][0]); //cout << " 3 SumaCyfr= " << LiczbaCyfr << endl; AA[i][0]=AA[1-i][0]+1; wyjdz=1; j=AA[i][0]+1; } else if (AA[i][j]>AA[1-i][j]){ for(h=AA[i][0]+1;h<=AA[1-i][0]; h++){AA[i][h]=0;} LiczbaCyfr=(long long)LiczbaCyfr+(AA[1-i][0])-(AA[i][0]); //cout << " 4 SumaCyfr= " << LiczbaCyfr << endl; AA[i][0]=AA[1-i][0]; wyjdz=1; j=AA[i][0]+1; } } if(wyjdz==0) { if(AA[i][0]==AA[1-i][0]){ (AA[i][0])++; LiczbaCyfr=(long long)LiczbaCyfr+1; AA[i][AA[i][0]]=0; //cout << " 5 SumaCyfr= " << LiczbaCyfr << endl; } else { czysamedziewiatki=1; for(h=AA[i][0]+1;h<=AA[1-i][0]; h++){ AA[i][h]=AA[1-i][h]; if(AA[1-i][h]!=9) czysamedziewiatki=0; } if(czysamedziewiatki==0){ LiczbaCyfr=(long long)LiczbaCyfr+(AA[1-i][0])-(AA[i][0]); AA[i][0]=AA[1-i][0]; //cout << " 6 SumaCyfr= " << LiczbaCyfr << endl; DodajJeden(i); } else{ for(h=AA[i][0]+1;h<=AA[1-i][0]+1; h++){ AA[i][h]=0; } LiczbaCyfr=(long long)LiczbaCyfr+(AA[1-i][0]+1)-(AA[i][0]); AA[i][0]=AA[1-i][0]+1; //cout << " 7 SumaCyfr= " << LiczbaCyfr << endl; } } } } //for(int t=0;t<=AA[i][0];t++) cout << AA[i][t] << " " ; //cout << "dla i=" << i << endl; } cout << LiczbaCyfr; 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 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 110 111 112 113 114 115 116 117 | #include <iostream> #include <string> using namespace std; int AA[2][200200]; void wczytaj(int x,int i){ int j=1; int k; int tmp; while(x>0){ AA[i][j]=x%10; x=x/10; j++; } j--; AA[i][0]=j; //for(int t=0;t<=AA[i][0];t++) cout << AA[i][t] << " " ; //cout << endl; for(k=1; k<=j/2;k++){ tmp=AA[i][k]; AA[i][k]=AA[i][j+1-k]; AA[i][j+1-k]=tmp; } //for(int t=0;t<=AA[i][0];t++) cout << AA[i][t] << " " ; //cout << endl; } void DodajJeden(int i){ int wyjdz=0; int j; for(j=AA[i][0];j>0;j--){ (AA[i][j])++; if (AA[i][j]>=10){ AA[i][j]=0; } else {j=0; wyjdz=1;} } } int main () { int N; int x; int t; int j; int h; int czysamedziewiatki; int wyjdz; long long LiczbaCyfr=0; cin >> N; cin >> x; int i=0; wczytaj(x,i); //for(int t=0;t<=AA[i][0];t++) cout << AA[i][t] << " " ; //cout << "dla i=" << i << endl; for(t=1;t<N;t++){ i=1-i; cin >> x; wczytaj(x,i); wyjdz=0; if(AA[i][0]<=AA[1-i][0]){ for(j=1;j<=AA[i][0];j++){ if(AA[i][j]<AA[1-i][j]){ for(h=AA[i][0]+1;h<=AA[1-i][0]+1;h++){AA[i][h]=0;} LiczbaCyfr=(long long)LiczbaCyfr+(AA[1-i][0]+1)-(AA[i][0]); //cout << " 3 SumaCyfr= " << LiczbaCyfr << endl; AA[i][0]=AA[1-i][0]+1; wyjdz=1; j=AA[i][0]+1; } else if (AA[i][j]>AA[1-i][j]){ for(h=AA[i][0]+1;h<=AA[1-i][0]; h++){AA[i][h]=0;} LiczbaCyfr=(long long)LiczbaCyfr+(AA[1-i][0])-(AA[i][0]); //cout << " 4 SumaCyfr= " << LiczbaCyfr << endl; AA[i][0]=AA[1-i][0]; wyjdz=1; j=AA[i][0]+1; } } if(wyjdz==0) { if(AA[i][0]==AA[1-i][0]){ (AA[i][0])++; LiczbaCyfr=(long long)LiczbaCyfr+1; AA[i][AA[i][0]]=0; //cout << " 5 SumaCyfr= " << LiczbaCyfr << endl; } else { czysamedziewiatki=1; for(h=AA[i][0]+1;h<=AA[1-i][0]; h++){ AA[i][h]=AA[1-i][h]; if(AA[1-i][h]!=9) czysamedziewiatki=0; } if(czysamedziewiatki==0){ LiczbaCyfr=(long long)LiczbaCyfr+(AA[1-i][0])-(AA[i][0]); AA[i][0]=AA[1-i][0]; //cout << " 6 SumaCyfr= " << LiczbaCyfr << endl; DodajJeden(i); } else{ for(h=AA[i][0]+1;h<=AA[1-i][0]+1; h++){ AA[i][h]=0; } LiczbaCyfr=(long long)LiczbaCyfr+(AA[1-i][0]+1)-(AA[i][0]); AA[i][0]=AA[1-i][0]+1; //cout << " 7 SumaCyfr= " << LiczbaCyfr << endl; } } } } //for(int t=0;t<=AA[i][0];t++) cout << AA[i][t] << " " ; //cout << "dla i=" << i << endl; } cout << LiczbaCyfr; return 0; } |