凑算式
B DEF
A + --- + ------- = 10
C GHI
(如果显示有问题,可以参见【图1.jpg】)
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?
注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。(答案:29种)
#include<stdio.h>
int count=0;
void swap(int arr[],int a,int b)
{
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}
void fun(int arr[],int start,int end)
{
if(start==end)
{
long long int sum1=arr[3]*100+arr[4]*10+arr[5]; //注意
long long int sum2=arr[6]*100+arr[7]*10+arr[8]; //注意
long long int a=arr[0]*arr[2]*sum2;
long long int b=arr[1]*sum2;
long long int c=arr[2]*sum1;
long long int d=arr[2]*sum2;
if(a+b+c==d*10)
{
count++;
printf("%d+%d/%d+%d%d%d/%d%d%d=10\n",arr[0],arr[1],arr[2],arr[3],arr[4],arr[5],arr[6],arr[7],arr[8]);
}
}
else
{
for(int i=start;i<=end;i++)
{
swap(arr,start,i);
fun(arr,start+1,end);
swap(arr,start,i);
}
}
}
int main()
{
int arr[9]={1,2,3,4,5,6,7,8,9};
fun(arr,0,8);
printf("%d\n",count);
return 0;
}