从标准输入读入一个正整数N (N<1000*1000)
程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数。
注意:不要求输出每个表示,只统计有多少表示法!
例如:
用户输入:
100
程序输出:
11
再例如:
用户输入:
105
程序输出:
6
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int arr[9]={1,2,3,4,5,6,7,8,9};
int GetNum(int arr[9],int k,int q)
{
int i,s=0;
for(i=k;i<=q;i++)
{
s=s*10+arr[i];
}
return s;
}
int main()
{
int i,j,n,count=0;
int a=0,b=0,c=0;
scanf("%d",&n);
do{
for(i=0;i<=6;i++)
{
a=GetNum(arr,0,i);
for(j=i+1;j<=7;j++)
{
b=GetNum(arr,i+1,j);
c=GetNum(arr,j+1,8);
if(n==a+b/c&&b%c==0)
{
count++;
}
}
}
}while(next_permutation(arr,arr+9));
printf("%d",count);
return 0;
}