算式900

 题目描述

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

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

看下面的算式:

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

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

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

(5012-4987)*36=900

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

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

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

代码 

#include<algorithm>
#include<iostream>
#include<stdio.h>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<queue>
#include<vector>
#include<climits>

 using namespace std;
/*argc是命令行总的参数个数  
argv[]为保存命令行参数的字符串指针,其中第0个参数是程序的全名,以后的参数为命令行后面跟的用户输入的参数,argv参数是字符串指针数组,其各元素值为命令行中各字符串(参数均按字符串处理)的首地址。 指针数组的长度即为参数个数argc。数组元素初值由系统自动赋予。*/
int main(int argc ,const char *argv[])
{
    int a[]={0,1,2,3,4,5,6,7,8,9};
    do{
        if(a[0]==0||a[4]==0||a[8]==0)
            continue;
        int x1=a[0]*1000+a[1]*100+a[2]*10+a[3];
        int x2=a[4]*1000+a[5]*100+a[6]*10+a[7];
        int x3=a[8]*10+a[9];
        if((x1-x2)*x3==900)
            printf("(%d%d%d%d-%d%d%d%d)*%d%d=900\n",a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]);
      }
      while( next_permutation(a,a+10));
/*组合数学中经常用到排列,这里介绍一个计算序列全排列的函数:next_permutation(start,end)
当当前序列不存在下一个排列时,函数返回false,否则返回true
另外,需要强调的是,next_permutation()在使用前需要对欲排列数组按升序排序,否则只能找出该序列之后的全排列数。*/
	  return 0;
}

上一篇:P1010 幂次方


下一篇:LeetCode-137-Single Number II