2017蓝桥杯算式900(C++C组)
题目:算式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组)的更多相关文章
- 2017蓝桥杯九宫幻方(C++B组)
题目:九宫幻方 小明最近在教邻居家的小朋友小学奥数,而最近正好讲述到了三阶幻方这个部分,三阶幻方指的是将1~9不重复的填入一个3*3的矩阵当中,使得每一行.每一列和每一条对角线的和都是相同的. ...
- 2017蓝桥杯贪吃蛇(C++C组)
原题: 贪吃蛇长度+-------------------------------------------------+| ...
- 2013第四届蓝桥杯决赛Java高职高专组题目以及解法答案
2013第四届蓝桥杯决赛Java高职高专组题目以及解法答案 不知不觉离决赛都过去一个月了,一直忙于各种事情,都忘记整理一份试题.当作回忆也好. 1. 标题:好好学习 汤姆跟爷爷来中国旅游.一天,他帮助 ...
- 2021蓝桥杯省赛C++A组试题E 回路计数 状态压缩DP详细版
2021蓝桥杯省赛C++A组试题E 回路计数 状态压缩DP 题目描述 蓝桥学院由21栋教学楼组成,教学楼编号1到21.对于两栋教学楼a和b,当a和b互质时,a和b之间有一条走廊直接相连,两个方向皆可通 ...
- 2017第八届蓝桥杯C/C++语言A组
一:题目: 标题:迷宫 X星球的一处迷宫游乐场建在某个小山坡上.它是由10x10相互连通的小房间组成的. 房间的地板上写着一个很大的字母.我们假设玩家是面朝上坡的方向站立,则:L表示走到左边的房间,R ...
- 2017蓝桥杯等差素数(C++B组)
题目 : 等差素数列 2,3,5,7,11,13,....是素数序列.类似:7,37,67,97,127,157 ...
- 2018第九届蓝桥杯决赛(C++ B组)
逛了大半个北京还是挺好玩de 第一题 标题:换零钞 x星球的钞票的面额只有:100元,5元,2元,1元,共4种. 小明去x星旅游,他手里只有2张100元的x星币,太不方便,恰好路过x星银行就去换零钱. ...
- 蓝桥杯 2014本科C++ B组 奇怪的分式 暴力枚举
蓝桥杯 枚举 奇怪的分式 标题:奇怪的分式 上小学的时候,小明经常自己发明新算法.一次,老师出的题目是: 1/4 乘以 8/5 小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45 (参见图1 ...
- 2016第七届蓝桥杯C/C++语言A组
一:问题: 某君新认识一网友.当问及年龄时,他的网友说:“我的年龄是个2位数,我比儿子大27岁,如果把我的年龄的两位数字交换位置,刚好就是我儿子的年龄” 请你计算:网友的年龄一共有多少种可能情况? 提 ...
随机推荐
- Flutter Weekly Issue 47
教程 开辟 Dart 到 Native 的超级通道,饿了么跨平台的最佳实践 当永恒的软键盘问题遇到Flutter 插件 fijkplayer ijkplayer for flutter. ijkpla ...
- JVM 常用参数一览表(转)
参数 默认值或限制 说明 参数 默认值 功能 -XX:-AllowUserSignalHandlers 限于Linux和Solaris,默认不启用 允许为java进程安装信号处理器,信号处理参见类:s ...
- EPX Studio开发环境介绍
相信用过Delphi的人,都很清楚FastScript,EPX Studio就是以FastScript为编程基础语言,由于FastScript支持类似于Delphi的Pascal语法,因此EPX St ...
- 【opencv系列02】OpenCV4.X图像读取与显示
一.读取图片 opencv中采用imread() 函数读取图像 imread(filename, flags=None) filename 图片的路径 flags 图像读取方式 ● c ...
- Python3学习之路~10.1 多进程、进程间通信、进程池
一 多进程multiprocessing multiprocessing is a package that supports spawning processes using an API simi ...
- JDK_API关于时间的表达
判断日期是否是闰年 给定格式格式化 第二种表示时间的 Date java.util 类 Date 表示特定的瞬间,精确到毫秒. 构造方法 Date( ...
- canvas绘制折线图
效果图: 重难点: 1.画布左上角的顶点的坐标为(0 ,0),右下角的坐标最大,与平常思维相反 2.数据的处理 html代码: <!DOCTYPE html><html lang=& ...
- 解析“60k”大佬的19道C#面试题(下)
解析"60k"大佬的19道C#面试题(下) 在上篇中,我解析了前 10 道题目,本篇我将尝试解析后面剩下的所有题目. 姐妹篇:解析"60k"大佬的19道C#面试 ...
- 1036. 跟奥巴马一起编程(15) Java版
美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统.2014年底,为庆祝"计算机科学教育周"正式启动,奥巴马编写了很简单的计算机代 ...
- 《JavaScript 模式》读书笔记(5)— 对象创建模式2
这一篇,我们主要来学习一下私有属性和方法以及模块模式. 三.私有属性和方法 JavaScript并没有特殊的语法来表示私有.保护.或公共属性和方法,在这一点上与Java或其他语言是不同的.JavaSc ...