#include<iostream> #include<vector> #include<cmath> using namespace std; struct liczba { long long podstawa; int wykladnik; }; long long pot(int a) { long long pom=1; for(int i=0;i<a;i++) { pom*=10; } return pom; } int main() { int N,licz=0,pom; int delta1=0,delta2=0; liczba b; int k=0,l=0; cin>>N; long long a; vector<liczba>W; for(int i=0;i<N;i++) { cin>>a; pom=floor(log10(a)); b.podstawa=a; b.wykladnik=pom; W.push_back(b); } for(int i=1;i<N;i++) { delta1=0; k=0; if(W[i].wykladnik<W[i-1].wykladnik) { delta1=W[i].wykladnik; while(W[i].wykladnik<W[i-1].wykladnik) { licz++; W[i].wykladnik++; } delta1=W[i].wykladnik-delta1; if(W[i].podstawa*pot(delta1)+9-W[i-1].podstawa*pot(delta2)-l<=0) { licz++; W[i].wykladnik++; delta1++; }else while(W[i].podstawa*pot(delta1)+k-W[i-1].podstawa*pot(delta2)-l<=0){k++;} }else if(W[i].wykladnik==W[i-1].wykladnik) { if(W[i].podstawa*pot(delta1)-W[i-1].podstawa*pot(delta2)-l<=0) { licz++; W[i].wykladnik++; delta1++; } } delta2=delta1; l=k; } cout<<licz<<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 | #include<iostream> #include<vector> #include<cmath> using namespace std; struct liczba { long long podstawa; int wykladnik; }; long long pot(int a) { long long pom=1; for(int i=0;i<a;i++) { pom*=10; } return pom; } int main() { int N,licz=0,pom; int delta1=0,delta2=0; liczba b; int k=0,l=0; cin>>N; long long a; vector<liczba>W; for(int i=0;i<N;i++) { cin>>a; pom=floor(log10(a)); b.podstawa=a; b.wykladnik=pom; W.push_back(b); } for(int i=1;i<N;i++) { delta1=0; k=0; if(W[i].wykladnik<W[i-1].wykladnik) { delta1=W[i].wykladnik; while(W[i].wykladnik<W[i-1].wykladnik) { licz++; W[i].wykladnik++; } delta1=W[i].wykladnik-delta1; if(W[i].podstawa*pot(delta1)+9-W[i-1].podstawa*pot(delta2)-l<=0) { licz++; W[i].wykladnik++; delta1++; }else while(W[i].podstawa*pot(delta1)+k-W[i-1].podstawa*pot(delta2)-l<=0){k++;} }else if(W[i].wykladnik==W[i-1].wykladnik) { if(W[i].podstawa*pot(delta1)-W[i-1].podstawa*pot(delta2)-l<=0) { licz++; W[i].wykladnik++; delta1++; } } delta2=delta1; l=k; } cout<<licz<<endl; return 0; } |