枚举+排序|神奇算式|2014年蓝桥杯A组题解析第三题-fishers
标题:神奇算式
由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成。
比如:
210 x 6 = 1260
8 x 473 = 3784
27 x 81 = 2187
都符合要求。
如果满足乘法交换律的算式算作同一种情况,那么,包含上边已列出的3种情况,一共有多少种满足要求的算式。
请填写该数字,通过浏览器提交答案,不要填写多余内容(例如:列出所有算式)。
这里的思路:枚举4个数字,判断两两数的乘积是否等于 这4个数组成的某个数字(判断相等,可以先用字符串排序,只要满足 A(a*b) == B(ab的各个位数组成的数,则满足条件)
起初,没有想到这一点啊,就直接用暴力全部情况枚举一遍了(效率太低,写代码花时间太多了)
还可以转成字符串,只要字符串相等就是一种方案。
学会整数转字符串(sstream库):
#include <sstream字符串流>
#include <string>
string src_str;
stringstream ss;
ss << a;
ss >> src_str;
介绍sstream字符串流的博文:https://www.cnblogs.com/wyuzl/p/6135537.html
#include <iostream>
#include <sstream>
#include <string>
#include <algorithm>
bool check(int src, int r);
using namespace std;
int ans;
int main(int argc, const char *argv[]) {
for (int i = 1; i < 10; ++i) {
for (int j = 0; j < 10; ++j) {
if (i != j)
for (int k = 0; k < 10; ++k) {
if (k != i && k != j)
for (int l = 0; l < 10; ++l) {
if (l != i && l != j && l != k) {
int src = i * 1000 + j * 100 + k * 10 + l;//ijkl四位数
//验证
if (j != 0) {
int r1 = i * (j * 100 + k * 10 + l);//乘法结果
if (check(src, r1)) {
printf("%d * %d\n", i,j * 100 + k * 10 + l);
ans++;
}
}
//验证
if (k != 0) {
int r2 = (i * 10 + j) * (k * 10 + l);//乘法结果
if ((i * 10 + j)< (k * 10 + l)&&check(src, r2)) {
printf("%d * %d\n", i * 10 + j, k * 10 + l);
ans++;
}
}
// if (l != 0) {
// int r3 = (i * 100 + j * 10 + k) * (l);//乘法结果
// if (check(src, r3)) {
// printf("%d * %d\n", i * 100 + j * 10 + k, l);
// ans++;
// }
// }
}
}
}
}
}
cout << ans << endl;
return 0;
}
bool check(int src, int r) {
// 先转字符串,排序,比较
string src_str, r_str;
stringstream ss;
ss << src;
ss >> src_str;
stringstream ss1;
ss1 << r;
ss1 >> r_str;
sort(r_str.begin(), r_str.end());
sort(src_str.begin(), src_str.end());
if (r_str == src_str) {
return true;
}
return false;
}
枚举+排序|神奇算式|2014年蓝桥杯A组题解析第三题-fishers的更多相关文章
- 奇怪的分式|2014年蓝桥杯B组题解析第六题-fishers
奇怪的分式 上小学的时候,小明经常自己发明新算法.一次,老师出的题目是: 1/4 乘以 8/5 小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45 (参见图1.png) 老师刚想批评他,转念 ...
- 啤酒和饮料|2014年蓝桥杯B组题解析第一题-fishers
啤酒和饮料|2014年第五届蓝桥杯B组题解析第一题-fishers 啤酒和饮料 啤酒每罐2.3元,饮料每罐1.9元.小明买了若干啤酒和饮料,一共花了82.3元. 我们还知道他买的啤酒比饮料的数量少,请 ...
- 第六届蓝桥杯JavaB组国(决)赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.分机号 X老板脾气古怪,他们公司的电话分机号都是3位数,老板规定,所有号码必须是降序排列,且不能有重复的数位.比如: 751,520, ...
- 第六届蓝桥杯JavaA组国(决)赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.胡同门牌号 小明家住在一条胡同里.胡同里的门牌号都是连续的正整数,由于历史原因,最小的号码并不是从1开始排的. 有一天小明突然发现了有 ...
- 全排列+字符串查找|扑克排序|2014年蓝桥杯A组题解析第六题-fishers
标题:扑克序列 A A 2 2 3 3 4 4, 一共4对扑克牌.请你把它们排成一行. 要求:两个A中间有1张牌,两个2之间有2张牌,两个3之间有3张牌,两个4之间有4张牌. 请填写出所有符合要求的排 ...
- 古堡算式|2012年蓝桥杯B组题解析第二题-fishers
(4')古堡算式 福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式: ABCDE * ? = EDCBA 他对华生说:"ABCDE应该代表不同的数字,问号也代表某个数字!" 华生: ...
- 马虎的算式|2013年蓝桥杯B组题解析第二题-fishers
小明是个急性子,上小学的时候经常把老师写在黑板上的题目抄错了. 有一次,老师出的题目是:36 x 495 = ? 他却给抄成了:396 x 45 = ? 但结果却很戏剧性,他的答案竟然是对的!! 假设 ...
- 0-1背包dp|波动数列|2014年蓝桥杯A组10-fishers
标题:波动数列 观察这个数列: 1 3 0 2 -1 1 -2 ... 这个数列中后一项总是比前一项增加2或者减少3. 栋栋对这种数列很好奇,他想知道长度为 n 和为 s 而且后一项总是比前一项增加a ...
- 李白打酒|2014年蓝桥杯B组题解析第三题-fishers
李白打酒 话说大诗人李白,一生好饮.幸好他从不开车. 一天,他提着酒壶,从家里出来,酒壶中有酒2斗.他边走边唱: 无事街上走,提壶去打酒. 逢店加一倍,遇花喝一斗. 这一路上,他一共遇到店5次,遇到花 ...
随机推荐
- 关于django编码问题所导致的502错误
在使用django开发的时候,访问网站出现了502错误,次数也比较平繁 uwsgi+nginx+django 在命令行下提示如下错误 : File "/opt/apps/python3/li ...
- JVM探秘3---垃圾回收机制详解
众所周知,Java有自己的垃圾回收机制,它可以有效的释放系统资源,提高系统的运行效率.那么它是怎么运行的呢,这次就来详细解析下Java的垃圾回收 1.什么是垃圾? 垃圾回收回收的自然是垃圾,那么jav ...
- Python数据类型深入学习之数字
一. 数字常量 1. 下面来看看Python的数字常量中都要哪些类型: 数字 常量 129,-89,0 一般整数 9999848499999L,4594646469l 长整型数(无限大小) 1.232 ...
- Linux下java nohup 后台运行关闭后进程停止的原因,不挂断后台运行命令
Linux下java nohup 后台运行关闭后进程停止的原因,不挂断后台运行命令 今天写sh脚本发现一终止命令程序就停止运行了,检查了很久才发现后面少了个&字符导致的!错误写法:nohup ...
- GIT 分布式版本控制系统的简单使用介绍
GIT 分布式版本控制系统的简单使用介绍 1.GIT的概念Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git 与 SVN 区别:1. GIT不仅仅是个版本控制系统,它 ...
- [转载]FileStream读写文件
FileStream读写文件 FileStream类:操作字节的,可以操作任何的文件 StreamReader类和StreamWriter类:操作字符的,只能操作文本文件. 1.FileStream类 ...
- 安装使用zookeeper
1,加压 2,复制zoo_sample.cfg命名为zoo.cfg 3,在conf同级目录下新建一文件夹 data 4,修改数据存放目录 5,启动zookeeper
- Action的编写方式
四.Action 的编写方式 : 三种 第一种 创建普通类 不继承任何类,不实现任何接口 Public class HelloAction{ } 第二种 创建类,实现接口action Public ...
- xml文件中[Invalid byte 1 of 1-byte UTF-8 sequence.]的解决方案
问题描述: 导入项目包后发生xml文件出现错误信息:[Invalid byte 1 of 1-byte UTF-8 sequence.],如下截图所示: 解决方案: 将xml文件全部内容剪切到Note ...
- 安装ubuntu18.04.1
下载ubuntu:https://www.ubuntu.com/download/desktop 在虚拟机创建好ubuntu18.04.1后无法启动(选择的是linux,ubuntu64位),提示:此 ...