#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; } |
English