凑算式

落日映苍穹つ 2022-08-05 02:54 285阅读 0赞

看这个算式:

☆☆☆ + ☆☆☆ = ☆☆☆

如果每个五角星代表 1 ~ 9 的不同的数字。

这个算式有多少种可能的正确填写方法?

173 +286 = 459

295 +173 = 468

173 +295 = 468

183 +492 = 675

以上都是正确的填写法!

注意:

111 +222 = 333 是错误的填写法!

因为每个数字必须是不同的!

也就是说:1~9中的所有数字,每个必须出现且仅出现一次!

注意:

不包括数字“0”!

注意:

满足加法交换率的式子算两种不同的答案。

所以答案肯定是个偶数!

注意:

只要求计算不同的填法的数目

不要求列出所有填写法

更不要求填写源代码!

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int arr[9]={1,2,3,4,5,6,7,8,9},n=9,count=0;
  4. void swap(int i,int j)
  5. {
  6. int temp=arr[i];
  7. arr[i]=arr[j];
  8. arr[j]=temp;
  9. }
  10. void print()
  11. {
  12. int m,n,x;
  13. m=(arr[0])*100+(arr[1])*10+arr[2];
  14. n=(arr[3])*100+(arr[4])*10+arr[5];
  15. x=(arr[6])*100+(arr[7])*10+arr[8];
  16. if(m+n==x&&m<n)
  17. count++;
  18. }
  19. void perm(int start,int end){
  20. if(start==end){
  21. print();
  22. }else{
  23. for(int i=start;i<=end;i++)
  24. if(start==i||(start!=i&&arr[start]!=arr[i])){//剔除重复项
  25. swap(start,i);
  26. perm(start+1,end);
  27. swap(start,i);
  28. }
  29. }
  30. }
  31. int main(){
  32. int i,j;
  33. //小→大,可以轻易剔除重复排列
  34. for(i=0;i<n;i++)
  35. for(j=i+1;j<n;j++)
  36. if(arr[i]>arr[j])
  37. swap(i,j);
  38. perm(0,n-1);
  39. printf("%d\n",count);
  40. }

测试结果:

SouthEast

发表评论

表情:
评论列表 (有 0 条评论,285人围观)

还没有评论,来说两句吧...

相关阅读

    相关 算式

    凑算式 (不知道为什么放不了图片.) 这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。 比如: 6+8/3+952/714 就是一种解法, 5

    相关 算式

    看这个算式: ☆☆☆ \+ ☆☆☆ = ☆☆☆ 如果每个五角星代表 1 ~ 9 的不同的数字。 这个算式有多少种可能的正确填写方法? 173 +286 = 459 2

    相关 趣味算式

    / 匪警请拨110,即使手机欠费也可拨通! 为了保障社会秩序,保护人民群众生命财产安全,警察叔叔需要与罪犯斗智斗勇,因而需要经常性地进行体力训

    相关 蓝桥杯 算式

    凑算式 ![在这里插入图片描述][20190322222646193.] (如果显示有问题,可以参见【图1.jpg】) 这个算式中AI代表19的数字,不同的字母代表不同