试题 历届试题 带分数
#include<stdio.h> #include<cstring> #include<iostream> using namespace std; int num,sum=0; int s[10],visit[10]; void del(int s[]){ int a,b,c,i,j,k; for(i=1;i<=9;i++){ a=0; for(j=1;j<=i;j++){ a=a*10+s[j]; } if(a<num){ for(j=(9-i)/2+i;j<=8;j++){ b=0; c=0; for(k=i+1;k<=j;k++){ b=b*10+s[k]; } for(k=j+1;k<=9;k++){ c=c*10+s[k]; } if(b%c==0&&a+b/c==num){ sum++; // printf("s"); } } } } return; } void dfs(int step,int n){ if(step==n){ del(s); return; } else{ for(int i=1;i<=9;i++){ if(visit[i]==0){ s[step]=i; visit[i]=1; dfs(step+1,n); visit[i]=0; } } } } int main(){ // printf("%d\n",sum); memset(visit,0,sizeof(visit)); scanf("%d",&num); dfs(1,10); printf("%d\n",sum); }