题目:算式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. 01.UNIX基础知识

    1.UNIX体系结构 什么叫做内核? 内核是一种软件,它控制计算机硬件资源,并提供程序的运行环境. 什么叫操作系统? 在广义上,操作系统包括了内核和一些其他软件,这些软件使得计算机能够发挥作用,如可以 ...

  2. oracle中plsql练习题----查询姓为“SMITH”的员工信息,并输出其员工号、姓名、工资、部门号。 – –如果该员工不存在,则插入一条新记录,员工号为2012,员工姓名为“Smith”,工资为7500元,入职日期为“2002年3月5日”,部门号为50。 – –如果存在多个名“Smith”的员工,则输出所有名为“Smith”的员工号、姓名、工资、入职日期、部门号L。

    一.思路:首先判断这个查询的是emp表,需要接收值,声明一个rowtype类型接收数据即可,第二是,存在exception,需要处理,exception中有两种异常,分别处理即可,分别输出即可. 二. ...

  3. Kafka的面试题

    1.Kafka的设计是什么样的呢?Kafka将消息以topic为单位进行归纳将向Kafka topic发布消息的程序成为producers.将预订topics并消费消息的程序成为consumer.Ka ...

  4. 云CRM系统安全吗

    云CRM系统有一个特点只要连接互联网就能够进行访问,这种访问可以是移动端也可以是电脑端的,而且本地CRM系统只允许电脑端访问.云CRM系统将数据存储在云服务器上,很多人就会问云CRM系统安全吗?下面和 ...

  5. VS2019 C++动态链接库的创建使用(3) - 如何导出类

    如何在动态链接库里导出一个类? ①在库头文件里增加一个类声明,class DLL1_API Point是将类内所有成员都导出,如果只导出某个成员函数,则只需在对应的成员函数前加DLL1_API即可: ...

  6. 为什么Mysql的常用引擎都默认使用B+树作为索引?

    一.前言 为了讲清楚这个问题,我们要先了解什么是索引. 我记得刚刚学习数据库的时候,老师喜欢用书本的目录来类比数据库的索引,并告诉我们索引能够像目录一样,让我们更快地找到想要找到的数据. 如果是第一次 ...

  7. 99%的程序员都在用Lombok,原理竟然这么简单?我也手撸了一个!|建议收藏!!!

    罗曼罗兰说过:世界上只有一种英雄主义,就是看清生活的真相之后依然热爱生活. 对于 Lombok 我相信大部分人都不陌生,但对于它的实现原理以及缺点却鲜为人知,而本文将会从 Lombok 的原理出发,手 ...

  8. effective-java学习笔记---静态工厂方法替代构造方法

    使用静态方法的优点: 1.它们是有名字的,生成的客户端代码更易阅读. 如:返回素数的静态方法 BigInteger.probablePrime 2.与构造方法不同,它们不需要每次调用时都创建一个对象. ...

  9. python之面向对象三大特性: 继承(单继承)

    什么是继承 专业角度: B 继承 A类, B就叫做A的子类,派生类, A叫做B的父类,基类,超类. B类以及B类的对象使用A类的所有的属性以及方法. 字面意思: 继承就是继承父母所有的资产 class ...

  10. 怎样设计最优的卷积神经网络架构?| NAS原理剖析

    虽然,深度学习在近几年发展迅速.但是,关于如何才能设计出最优的卷积神经网络架构这个问题仍在处于探索阶段. 其中一大部分原因是因为当前那些取得成功的神经网络的架构设计原理仍然是一个黑盒.虽然我们有着关于 ...