算式900(蓝桥杯题库)

文章描述了一个计算问题,要求找到算式(□□□□-□□□□)*□□=900的另一个解,除了已知的(5012-4987)*36=900之外。通过C语言编写代码,遍历所有可能的数字组合来寻找满足条件的答案,强调了代码中避免重复数字的重要性。

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

小明的作业本上有道思考题:

看下面的算式:

  (□□□□-□□□□)*□□=900

其中的小方块代表 0 ~ 9 的数字,这 10 个方块刚好包含了 0 ~ 9 中的所有数字。 注意:0 不能作为某个数字的首位。

小明经过几天的努力,终于做出了答案!如下:

(5012-4987)*36=900

用计算机搜索后,发现还有另外一个解,本题的任务就是:请你算出这另外的一个解。

注意:输出格式需要与示例严格一致; 括号及运算符号不要用中文输入法; 整个算式中不能包含空格。

问题分析

我们可以采用先保证每一位不相同来寻找数字,也可以先寻找数字,再确定每一位不相同。

两种方法都可以找出答案。

代码实现

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  for(int i=1;i<=9;i++){
    for(int j=0;j<=9;j++){
      if(i!=j){
        for(int k=0;k<=9;k++){
          if(k!=i&&k!=j){
            for(int l=0;l<=9;l++){
              if(l!=i&&l!=j&&l!=k){
                for(int m=1;m<=9;m++){
                  if(m!=i&&m!=j&&m!=k&&m!=l){
                    for(int n=0;n<=9;n++){
                      if(n!=i&&n!=j&&n!=k&&n!=l&&n!=m){
                        for(int o=0;o<=9;o++){
                          if(o!=i&&o!=j&&o!=k&&o!=l&&o!=m&&o!=n){
                            for(int p=0;p<=9;p++){
                              if(p!=i&&p!=j&&p!=k&&p!=l&&p!=m&&p!=n&&p!=o){
                                for(int q=1;q<=9;q++){
                                  if(q!=i&&q!=j&&q!=k&&q!=l&&q!=m&&q!=n&&q!=o&&q!=p){
                                    for(int r=0;r<=9;r++){
                                      if(r!=i&&r!=j&&r!=k&&r!=l&&r!=m&&r!=n&&r!=o&&r!=p&&r!=q){
                                        if((i*1000+j*100+k*10+l-m*1000-n*100-o*10-p)*(q*10+r)==900&&(i*1000+j*100+k*10+l)!=5012){
                                          printf("(%d%d%d%d-%d%d%d%d)*%d%d=900",i,j,k,l,m,n,o,p,q,r);
                                          return 0;
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  return 0;
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值