#include <stdio.h>
#include <string.h>
int number, count = 0;
int getn(char *str, int n)
{
int i, r = 0;
for (i = 0; i < n; i++)
{
r *= 10;
r += str[i] - '0';
}
return r;
}
void cb(char arr[], int n)
{
int p, d;
int a, b, c;
for (p = 0; p < n - 1; p++) // 加号的位置
{
for (d = p + 1; d < n - 1; d++) // 除号的位置
{
b = getn(arr + p, d - p);
c = getn(arr + d, n - d);
if (b % c == 0)
{
a = getn(arr, p);
if (a + b / c == number)
{
//printf("%d = %d + %d / %d\n", number, a, b, c);
count++;
}
}
}
}
}
void swap(char *a, char *b)
{
char t = *a;
*a = *b;
*b = t;
}
// 以下为全排列算法
void fun(char arr[], int n, int k)
{
int i;
if (k >= n)
{
/*for (i = 0; i < n; i++)
printf("%d ", arr[i]);
putchar('\n');*/
cb(arr, n); // 调用回调函数
return;
}
for (i = k; i < n; i++)
{
swap(arr + i, arr + k);
fun(arr, n, k + 1);
swap(arr + i, arr + k);
}
}
int main()
{
char arr[] = {'1', '2', '3', '4', '5', '6', '7', '8', '9'};
scanf("%d", &number);
fun(arr, 9, 0);
printf("%d\n", count);
return 0;
}