#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;
unsigned long long int gry[200001];
int main()
{
int n;
cin>>n;
unsigned long long int licznik=0;
int breaker=1;
double iloraz;
int cyfry1;
int cyfry2;
for(int i=0;i<n;i++)
{
cin>>gry[i];
//cout<<int(floor(double(gry[i])/double(pow(10,floor(int( log10(gry[i]) ) ) ) ) ) )%10<<endl;
}
for(int i=1;i<n;i++)
{
if(gry[i]<=gry[i-1])
{
breaker=1;
while(breaker==1)
{
iloraz=double(gry[i-1])/double(gry[i]);
//cout<<iloraz<<endl;
cyfry1=floor(log10(gry[i]+pow(10,-10)));
cyfry2=floor(log10(gry[i-1]+pow(10,-10)));
gry[i]=gry[i]*pow(10,max(cyfry2-cyfry1,1));
licznik+=max(1,cyfry2-cyfry1);
if(gry[i]>gry[i-1])
{
//cout<<gry[i]<<" "<<gry[i-1]<<endl;
break;
}else{
//cout<<gry[i]<<" "<<gry[i-1]<<endl;
if(cyfry2-cyfry1==1)
{
//cout<<"jest"<<endl;
if(gry[i-1]%10==9)
{
gry[i]=10*gry[i];
licznik++;
breaker=1;
break;
}
}
if(int(floor(double(gry[i])/double(pow(10,floor(int( log10(gry[i]) ) ) ) ) ) )%10<int(floor(double(gry[i-1])/double(pow(10,floor(int( log10(gry[i-1]) ) ) ) ) ) )%10)
{
gry[i]=10*gry[i];
licznik++;
breaker=1;
break;
}
if(gry[i-1]-gry[i]<pow(10,cyfry2-cyfry1))
{
gry[i]=gry[i-1];
}
if(gry[i-1]-gry[i]==round(pow(10,cyfry2-cyfry1)))
{
gry[i]=10*gry[i];
licznik++;
breaker=1;
break;
}
for(int j=0;j<int(pow(10,floor(log10(iloraz))))-1;j=j+1)
{
gry[i]++;
if(gry[i]>gry[i-1])
{
breaker=0;
//cout<<gry[i]<<" "<<gry[i-1]<<endl;
break;
}
//cout<<gry[i]<<" "<<gry[i-1]<<endl;
if(j==int(pow(10,floor(log10(iloraz))))-2)
{
gry[i]-=int(pow(10,floor(log10(iloraz))))-1;
//cout<<gry[i]<<" "<<gry[i-1]<<endl;
}
}
}
//cout<<gry[i]<<" "<<gry[i-1]<<endl;
}
}
}
/*cout<<endl;
for(int i=0;i<n;i++)
{
cout<<gry[i]<<endl;
}*/
cout<<licznik<<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 | #include <cstdio> #include <iostream> #include <cmath> using namespace std; unsigned long long int gry[200001]; int main() { int n; cin>>n; unsigned long long int licznik=0; int breaker=1; double iloraz; int cyfry1; int cyfry2; for(int i=0;i<n;i++) { cin>>gry[i]; //cout<<int(floor(double(gry[i])/double(pow(10,floor(int( log10(gry[i]) ) ) ) ) ) )%10<<endl; } for(int i=1;i<n;i++) { if(gry[i]<=gry[i-1]) { breaker=1; while(breaker==1) { iloraz=double(gry[i-1])/double(gry[i]); //cout<<iloraz<<endl; cyfry1=floor(log10(gry[i]+pow(10,-10))); cyfry2=floor(log10(gry[i-1]+pow(10,-10))); gry[i]=gry[i]*pow(10,max(cyfry2-cyfry1,1)); licznik+=max(1,cyfry2-cyfry1); if(gry[i]>gry[i-1]) { //cout<<gry[i]<<" "<<gry[i-1]<<endl; break; }else{ //cout<<gry[i]<<" "<<gry[i-1]<<endl; if(cyfry2-cyfry1==1) { //cout<<"jest"<<endl; if(gry[i-1]%10==9) { gry[i]=10*gry[i]; licznik++; breaker=1; break; } } if(int(floor(double(gry[i])/double(pow(10,floor(int( log10(gry[i]) ) ) ) ) ) )%10<int(floor(double(gry[i-1])/double(pow(10,floor(int( log10(gry[i-1]) ) ) ) ) ) )%10) { gry[i]=10*gry[i]; licznik++; breaker=1; break; } if(gry[i-1]-gry[i]<pow(10,cyfry2-cyfry1)) { gry[i]=gry[i-1]; } if(gry[i-1]-gry[i]==round(pow(10,cyfry2-cyfry1))) { gry[i]=10*gry[i]; licznik++; breaker=1; break; } for(int j=0;j<int(pow(10,floor(log10(iloraz))))-1;j=j+1) { gry[i]++; if(gry[i]>gry[i-1]) { breaker=0; //cout<<gry[i]<<" "<<gry[i-1]<<endl; break; } //cout<<gry[i]<<" "<<gry[i-1]<<endl; if(j==int(pow(10,floor(log10(iloraz))))-2) { gry[i]-=int(pow(10,floor(log10(iloraz))))-1; //cout<<gry[i]<<" "<<gry[i-1]<<endl; } } } //cout<<gry[i]<<" "<<gry[i-1]<<endl; } } } /*cout<<endl; for(int i=0;i<n;i++) { cout<<gry[i]<<endl; }*/ cout<<licznik<<endl; return 0; } |
English