Niestety, nie byliśmy w stanie w pełni poprawnie wyświetlić tego pliku, ponieważ nie jest zakodowany w UTF-8.
Możesz pobrać ten plik i spróbować otworzyć go samodzielnie.
#include <iostream>
#include <cmath>
using namespace std;
/*
15
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
*/
int main()
{
int n;
cin>>n;
int x[n], d[n], newd[n], log;
long long int licznik=-1, px, pom, current,wynik=0;
for(int i=0; i<n; ++i) {
cin>>x[i];
d[i] = log10(x[i])+1;
newd[i] = d[i];
}
current=d[0];
for(int i=1; i<n; ++i){
if(x[i]==x[i-1]){
if(d[i]==newd[i-1]){
//cout<<"H"<<endl;
current++;
wynik++;
newd[i]++;
licznik=1;
}
else{///n[i-1]>n[i] ogarnac z tym licznikiem
if(licznik==0) licznik++;
log=log10(licznik);
if(log<current-d[i]){
wynik+=current-d[i];
newd[i]=current;
}
else{
licznik=0;
current++;
wynik+=current-d[i];
newd[i]=current;
}
//cout<<i<<": "<<licznik<<" "<<current<<" "<<wynik<<endl;
licznik++;
}
}
else if(x[i]>x[i-1]){
licznik=0;
px=x[i]/(pow(10, d[i]-d[i-1]));
//cout<<px<<endl;
if(x[i-1]==px){
if(licznik=0) licznik++;
pom=pow(10, d[i]-d[i-1]);
if(x[i]%pom>=licznik){
licznik++;
wynik+=current-d[i];
newd[i]=current;
}
else {
licznik=0;
current++;
wynik+=current-d[i];
newd[i]=current;
}
}
else if(x[i-1]<px){
//cout<<"AA"<<" "<<current<<endl;
wynik+=current-d[i];
newd[i]=current;
}
else{
current++;
wynik+=current-d[i];
newd[i]=current;
}
}
else{ ///w tej sytuacji mamy albo (d[i]<=d[i-1]) i oczywi�cie x[i]<x[i-1]
licznik=0;
px=x[i-1]/(pow(10, (d[i-1]-d[i]))); //czyli n[i] pierwszych cyfr
//cout<<px<<endl;
if(x[i]==px){
pom=pow(10, d[i-1]-d[i]);
licznik=x[i-1]%pom+1;
//cout<<licznik<<endl;
log=log10(licznik);
if(log<current-d[i]){
wynik+=current-d[i];
newd[i]=current;
}
else{
current++;
wynik+=current-d[i];
newd[i]=current;
}
licznik++;
}
else if(x[i]>px){
licznik=0;
wynik+=current-d[i];
newd[i]=current;
}
else{
licznik=0;
current++;
wynik+=current-d[i];
//cout<<"A"<<wynik<<" "<<current<<endl;
newd[i]=current;
}
}
}
cout<<wynik<<endl;
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 | #include <iostream> #include <cmath> using namespace std; /* 15 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 */ int main() { int n; cin>>n; int x[n], d[n], newd[n], log; long long int licznik=-1, px, pom, current,wynik=0; for(int i=0; i<n; ++i) { cin>>x[i]; d[i] = log10(x[i])+1; newd[i] = d[i]; } current=d[0]; for(int i=1; i<n; ++i){ if(x[i]==x[i-1]){ if(d[i]==newd[i-1]){ //cout<<"H"<<endl; current++; wynik++; newd[i]++; licznik=1; } else{///n[i-1]>n[i] ogarnac z tym licznikiem if(licznik==0) licznik++; log=log10(licznik); if(log<current-d[i]){ wynik+=current-d[i]; newd[i]=current; } else{ licznik=0; current++; wynik+=current-d[i]; newd[i]=current; } //cout<<i<<": "<<licznik<<" "<<current<<" "<<wynik<<endl; licznik++; } } else if(x[i]>x[i-1]){ licznik=0; px=x[i]/(pow(10, d[i]-d[i-1])); //cout<<px<<endl; if(x[i-1]==px){ if(licznik=0) licznik++; pom=pow(10, d[i]-d[i-1]); if(x[i]%pom>=licznik){ licznik++; wynik+=current-d[i]; newd[i]=current; } else { licznik=0; current++; wynik+=current-d[i]; newd[i]=current; } } else if(x[i-1]<px){ //cout<<"AA"<<" "<<current<<endl; wynik+=current-d[i]; newd[i]=current; } else{ current++; wynik+=current-d[i]; newd[i]=current; } } else{ ///w tej sytuacji mamy albo (d[i]<=d[i-1]) i oczywi�cie x[i]<x[i-1] licznik=0; px=x[i-1]/(pow(10, (d[i-1]-d[i]))); //czyli n[i] pierwszych cyfr //cout<<px<<endl; if(x[i]==px){ pom=pow(10, d[i-1]-d[i]); licznik=x[i-1]%pom+1; //cout<<licznik<<endl; log=log10(licznik); if(log<current-d[i]){ wynik+=current-d[i]; newd[i]=current; } else{ current++; wynik+=current-d[i]; newd[i]=current; } licznik++; } else if(x[i]>px){ licznik=0; wynik+=current-d[i]; newd[i]=current; } else{ licznik=0; current++; wynik+=current-d[i]; //cout<<"A"<<wynik<<" "<<current<<endl; newd[i]=current; } } } cout<<wynik<<endl; return 0; } |
English