题目:算式900

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

  看下面的算式:

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

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

小明经过几天的努力,终于做出了答案!如下:
(5012-4987)*36=900

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

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

注意:机器评卷,不要填写任何多余的内容,比如说明文字。

解析:读完本题后,我们大概有了自己的想法,每个人都有自己解决的办法,不必拘于一种做法,在这里,我分享一下我的解法。首先,根据题意,我们可以先计算出10到99内可以被900整除的所有正整数,然后利用双重for循环遍历1000到9999之间做出的差,并加以判断该差是否可以被900整除并且属于第一步结果所得集合中的元素,如果符合,则需判断最后一步:减数和被减数还有900除以差的商是否占满了0-9是个数字且无重复(在这里,本人亲自写了一个算法,学识尚浅,欢迎指教)。

代码:

#include<iostream>
#include<fstream>
#include<string>

using namespace std;

#define SUB 100                                                                //10-99以内可以被900整除的数组的下标
int A1,A2,A3,A4,B1,B2,B3,B4,C1,C2;                                //将减数被减数和900除以差的商的千百十个位数分离后的各个数
int C[SUB] = {0};                                                                //10-99以内可以被900整除的数组
int ABC[10];                                                                       //被分离后的各个数组成的集合(方便判断)

void c_init();
void abc_init();
bool is_right(int data);                                                      //遍历能被900整除的数以判断是否满足is_right_temp函数
bool is_right_temp(int m,int n,int data);                         //判断减数被减数和900除以差的商分离后的各个数字是否各不相同

int main(int argc,char** argv){

c_init();

for(int i = 0;i < 13;i++){

is_right(C[i]);
}

return 0;
} 

void c_init(){

int order = 0;

for(int i = 10;i < 100;i++){

if(900 % i == 0){

C[order] = i;
order++;
}
}
}

void abc_init(){

ABC[0] = A1;
ABC[1] = A2;
ABC[2] = A3;
ABC[3] = A4;
ABC[4] = B1;
ABC[5] = B2;
ABC[6] = B3;
ABC[7] = B4;
ABC[8] = C1;
ABC[9] = C2;
}

bool is_right(int data){

ofstream fout;
fout.open("info.txt",ios::app);
string space = "  ";

for(int i = 1000;i < 10000;i++){

for(int j = 1000;j < 10000;j++){

if(i - j == 900 / data){

if(is_right_temp(i,j,data)){

fout << "(" << i << space << "-" << space << j << ")" << space << "*" << space << data << space << "="<< space << "900" << "\n";
}
}
}
}

fout.close();
}

bool is_right_temp(int a,int b,int c){

int nums = 0;
bool jud = false;

while(a > 0){

if(a / 10 >= 100){

A4 = a % 10;

}else if(a / 10 >= 10){

A3 = a % 10;

}else if(a / 10 >= 1){

A2 = a % 10;

}else{

A1 = a;
}

a = a / 10;
}

while(b > 0){

if(b / 10 >= 100){

B4 = b % 10;

}else if(b / 10 >= 10){

B3 = b % 10;

}else if(b / 10 >= 1){

B2 = b % 10;

}else{

B1 = b;
}

b = b / 10;
}

while(c > 0){

if(c / 10 >= 1){

C2 = c % 10;

}else{

C1 = c;
}

c = c / 10;
}

abc_init();

for(int i = 0;i < 10;i++){

for(int j = 0;j < 10;j++){

if(i == ABC[j]){

jud = true;

}
}

if(jud){

nums++;
jud = false;

}

}

if(nums == 10){

return true;

}else{

return false;
}

}

输出结果(本题本人用到了文件流知识点,也可以使用控制台输出.)


2017蓝桥杯算式900(C++C组)的更多相关文章

  1. 2017蓝桥杯九宫幻方(C++B组)

    题目:九宫幻方    小明最近在教邻居家的小朋友小学奥数,而最近正好讲述到了三阶幻方这个部分,三阶幻方指的是将1~9不重复的填入一个3*3的矩阵当中,使得每一行.每一列和每一条对角线的和都是相同的. ...

  2. 2017蓝桥杯贪吃蛇(C++C组)

    原题: 贪吃蛇长度+-------------------------------------------------+|                                        ...

  3. 2013第四届蓝桥杯决赛Java高职高专组题目以及解法答案

    2013第四届蓝桥杯决赛Java高职高专组题目以及解法答案 不知不觉离决赛都过去一个月了,一直忙于各种事情,都忘记整理一份试题.当作回忆也好. 1. 标题:好好学习 汤姆跟爷爷来中国旅游.一天,他帮助 ...

  4. 2021蓝桥杯省赛C++A组试题E 回路计数 状态压缩DP详细版

    2021蓝桥杯省赛C++A组试题E 回路计数 状态压缩DP 题目描述 蓝桥学院由21栋教学楼组成,教学楼编号1到21.对于两栋教学楼a和b,当a和b互质时,a和b之间有一条走廊直接相连,两个方向皆可通 ...

  5. 2017第八届蓝桥杯C/C++语言A组

    一:题目: 标题:迷宫 X星球的一处迷宫游乐场建在某个小山坡上.它是由10x10相互连通的小房间组成的. 房间的地板上写着一个很大的字母.我们假设玩家是面朝上坡的方向站立,则:L表示走到左边的房间,R ...

  6. 2017蓝桥杯等差素数(C++B组)

    题目 :                                            等差素数列 2,3,5,7,11,13,....是素数序列.类似:7,37,67,97,127,157 ...

  7. 2018第九届蓝桥杯决赛(C++ B组)

    逛了大半个北京还是挺好玩de 第一题 标题:换零钞 x星球的钞票的面额只有:100元,5元,2元,1元,共4种. 小明去x星旅游,他手里只有2张100元的x星币,太不方便,恰好路过x星银行就去换零钱. ...

  8. 蓝桥杯 2014本科C++ B组 奇怪的分式 暴力枚举

    蓝桥杯 枚举 奇怪的分式 标题:奇怪的分式 上小学的时候,小明经常自己发明新算法.一次,老师出的题目是: 1/4 乘以 8/5 小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45 (参见图1 ...

  9. 2016第七届蓝桥杯C/C++语言A组

    一:问题: 某君新认识一网友.当问及年龄时,他的网友说:“我的年龄是个2位数,我比儿子大27岁,如果把我的年龄的两位数字交换位置,刚好就是我儿子的年龄” 请你计算:网友的年龄一共有多少种可能情况? 提 ...

随机推荐

  1. Docker 技术系列之安装Docker Desktop for Mac

    终于要进入到Docker技术系列了,感谢大家的持续关注. 为什么要选择Docker?因为Docker 轻巧快速,提供了可行.经济.高效的替代方案.举个例子,安装Nginx,Mysql,Redis等常用 ...

  2. 【Weiss】【第03章】练习3.3:通过交换指针交换单/双链表元素

    [练习3.3] 通过之调整指针(而不是数据)来交换两个相邻的元素,使用 a.单链表 b.双链表 Answer: 先放测试代码,折叠标题可以看到分别是哪种链表的测试. 实测可满足题意,但单链表和双链表的 ...

  3. Linux 应用领域

    与Windows操作系统软件一样,Linux也是一个操作系统软件.但与Windows不同的是,Linux是一套开放源代码程序的,并可以自由传播的类UNIX操作系统软件,随着信息技术的更新变化,Linu ...

  4. GO语言web框架Gin之完全指南(二)

    这篇主要讲解自定义日志与数据验证 参数验证 我们知道,一个请求完全依赖前端的参数验证是不够的,需要前后端一起配合,才能万无一失,下面介绍一下,在Gin框架里面,怎么做接口参数验证的呢 gin 目前是使 ...

  5. canvas绘制流星雨特效

    源码: <!DOCTYPE html><html> <head> <meta charset="utf-8"> <meta n ...

  6. 动态规划-Cherry Pickup

    2020-02-03 17:46:04 问题描述: 问题求解: 非常好的题目,和two thumb其实非常类似,但是还是有个一点区别,就是本题要求最后要到达(n - 1, n - 1),只有到达了(n ...

  7. 你需要了解的 HTTP Status Code

    你需要了解的 HTTP Status Code Intro 现在前后端分离的开发模式越来越流行,后端负责开发对应的 API,前端只需要 关注前端页面的数据展示和前端逻辑即可. 对于前后端分离这种开发模 ...

  8. [暴力枚举]Codeforces Vanya and Label

    Vanya and Label time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  9. JS十大经典排序排序算法

    1.冒泡排序 冒泡排序通常排在第一位,说明它是排序算法的入门算法,是最简单的一个排序算法,而且必须掌握和理解. 先来看看代码吧: function bubbleSort(arr) { let temp ...

  10. Bootstrap 基本配置与应用

    配置使用 下载文件引用 下载方式:Bootstrap官网 https://www.bootcss.com/ 引用 例: <head> <meta charset="utf- ...