趣味编程题——猜算式

本文探讨了一道有趣的数学题目,即寻找满足特定条件的四位数乘法等式,其中等号两边各有两个两位数相乘及一个两位数与一个三位数相乘,且1至9的数字恰好各出现一次。通过编程方式找出所有符合条件的例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

看下面的算式:
□□ x □□ = □□ x □□□
它表示:两个两位数相乘等于一个两位数乘以一个三位数。
如果没有限定条件,这样的例子很多。
但目前的限定是:这9个方块,表示1~9的9个数字,不包含0。
该算式中1至9的每个数字出现且只出现一次!
比如:
46 x 79 = 23 x 158
54 x 69 = 27 x 138
54 x 93 = 27 x 186
.....
请编程,输出所有可能的情况!
注意:
左边的两个乘数交换算同一方案,不要重复输出!
不同方案的输出顺序不重要

解答:

#include "stdio.h"
int main()
{
 int i,j,k,h,m,n,t,s,ii;
 int f[10],d[4];
  for(i=12;i<=87;i++)
  {
   for(j=67;j<=98;j++)
   {
    for(k=12;k<=79;k++)
 {
  for(h=123;h<=987;h++)
  {
   d[0]=i; d[1]=j;
   d[2]=k; d[3]=h;
   s=0;
   if(d[0]*d[1]==d[2]*d[3]){
   for(m=1;m<=9;m++)
    f[m]=0;
      for(t=0;t<4;t++)
   {
    while(d[t]>0)
    {
     n=d[t]%10;
  f[n]++;
  d[t]=d[t]/10;
    }
   }
   for(ii=1;ii<=9;ii++)
   {
    if(f[ii]!=1) s=1;
   }
   if(s==0)
   printf("%d*%d=%d*%d\n",i,j,k,h);
   }
   else continue;
  }
 }
   }
  }

return 0;

} 


 

程序运行结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值