#include<iostream> #include<math.h> using namespace std; long long unsigned jeden[19],n,k,mult=1; int main() { cin>>n; jeden[0]=1; jeden[1]=2; for(int i=2;i<19;i++) { jeden[i]=jeden[i-1]*2+jeden[i-2]*8; } int j=0; for(int i=pow(10,((int)log10(n)+1));i>=0;i/=10) { if(i>0) { k=(n/i)%10; if(k==1)j++; else { if(j==0) mult*=k+1; else mult*=jeden[j]*(k+1)+jeden[j-1]*(9-k); j=0; } } else { if(k==1)mult*=jeden[j]; break; } } cout<<mult; }
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 | #include<iostream> #include<math.h> using namespace std; long long unsigned jeden[19],n,k,mult=1; int main() { cin>>n; jeden[0]=1; jeden[1]=2; for(int i=2;i<19;i++) { jeden[i]=jeden[i-1]*2+jeden[i-2]*8; } int j=0; for(int i=pow(10,((int)log10(n)+1));i>=0;i/=10) { if(i>0) { k=(n/i)%10; if(k==1)j++; else { if(j==0) mult*=k+1; else mult*=jeden[j]*(k+1)+jeden[j-1]*(9-k); j=0; } } else { if(k==1)mult*=jeden[j]; break; } } cout<<mult; } |