题目:算式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. Robotutor Scratch3.0 在线编程平台升级啦!

    Robotutor推出的Scratch3.0在线编程平台受到很多编程老师和学员的喜爱,上一个版本我们提供了用户注册,找回密码,个人项目的在线保存和浏览,社区分享评论. 我们根据实际的教学需要,用户角色 ...

  2. 【MVC】使用Jquery缓存数据

    前言 最近接手优化页面加载的任务. 分析其中一个原因是菜单页面ajax异步加载,页面很大,但是除非权限更改或者切换角色,否则每次请求返回数据不变,这个完全可以放在客户浏览器内进行缓存. 分析 粗略一分 ...

  3. Go 武林外传 - 初出茅庐

    没有旁白. 我叫小白, 白痴的白. 老头说我太笨了, 提前放我下山, 让我自生自灭. 对了, 忘了说了, 那老头是我师傅. 虽然我的内心深处是拒绝的, 但是我又打不过老头, 只好收拾铺盖滚犊子了. 算 ...

  4. [BUG]excel复制到input含有不可见内容(零宽字符)

    现象 excel手机号复制到input框子, length长度和可见长度不一致. "‭176xxxx1115‬" 长度是 13 而不是 11. 原因 手机号前后被 excel 插入 ...

  5. 使用Filter来过滤掉需要排除的数组对象

    问题描述:有个地方需要根据判断是否是总分公司来控制转正入口的显影,list是获取到的所有入口的数组,需要判断数组里哪个对象的title为"员工转正",本来打算用for循环的,之后发 ...

  6. 【Weiss】【第03章】链表例程的一些修改

    主要是,感觉原来的链表例程通过Node的分配形成了链表,但是没有自动消除Node的办法比较危险,一旦在clear()之前把链表赋了其它值就内存泄漏了. 所以改了析构函数,自动清理分配出来的内存.既然改 ...

  7. 高性能-GC

    带着问题去思考!大家好 相对.NET 来说.CLR去处理了,C,C++这些就需要手动去垃圾回收. GC大部分容易察觉的性能问题.其实很多问题实际是哪个都是由于对垃圾回收器的行为和预期结果理解有误.在, ...

  8. scrapy爬虫提取网页链接的两种方法以及构造HtmlResponse对象的方式

    Response对象的几点说明: Response对象用来描述一个HTTP响应,Response只是一个基类,根据相应的不同有如下子类: TextResponse,HtmlResponse,XmlRe ...

  9. Java 泛型数组问题

    Java中不支持泛型数组, 以下代码会编译报错:generic array creation ArrayList<Integer>[] listArr = new ArrayList< ...

  10. python之常用模块ymal

    在学习python如何操作yml文件之前,我们先科普一下yml的格式 yaml是专门写配置文件的语言,非常简洁和强大,比json更加方便 YAML 语言(发音 /ˈjæməl/ )的设计目标,就是方便 ...