奇怪的分式|2014年蓝桥杯B组题解析第六题-fishers
奇怪的分式
上小学的时候,小明经常自己发明新算法。一次,老师出的题目是:
1/4 乘以 8/5
小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45 (参见图1.png)
老师刚想批评他,转念一想,这个答案凑巧也对啊,真是见鬼!
对于分子、分母都是 1~9 中的一位数的情况,还有哪些算式可以这样计算呢?
请写出所有不同算式的个数(包括题中举例的)。
显然,交换分子分母后,例如:4/1 乘以 5/8 是满足要求的,这算做不同的算式。
但对于分子分母相同的情况,2/2 乘以 3/3 这样的类型太多了,不在计数之列!
注意:答案是个整数(考虑对称性,肯定是偶数)。请通过浏览器提交。不要书写多余的内容。

思路一:dfs全排列,最后筛选条件
思路二:也可以暴力枚举,四成循环。蓝桥杯这种暴力解题很常见!
代码一:
#include<iostream>
using namespace std;
int a[6];
int ans = 0;
//求最大公约数
int gcd(int xx, int yy) {
if (yy == 0) {
return xx;
}
return gcd(yy, xx%yy);
}
//测试条件是否满足
bool test(){
if(a[1] == a[2] && a[3] == a[4]){
return false;
}
if(a[1] == a[3] && a[2] == a[4]){
return false;
}
int x = gcd(a[2]*a[4],a[1]*a[3]);
int y = gcd(10*a[2]+a[4],10*a[1]+a[3]);
//同分、化简后再比较两个分数
if((a[2]*a[4])/x == (10*a[2]+a[4])/y && (a[1]*a[3])/x == (10*a[1]+a[3])/y){
return true;
}
return false;
}
/*
参数x表示第几个位置
b/a c/d,这里 a是a[1]即第一个位置,b是a[2] 即第二个位置 d是a[3] c是a[4]
*/
void dfs(int x){
if(x == 5){
if(test()){
ans++;
// for(int i=1;i<=4;i++){
// cout<<a[i]<<" ";
// }
// cout<<endl;
return;
}
return;
}
//每个位置都可以填9个数
for(int i=1;i<=9;i++){
a[x] = i;
dfs(x+1);//搜索下一个位置
}
}
int main(){
dfs(1);//从a这个位置开始搜索,也就是第一个位置
cout<<ans<<endl;
}

代码二:
#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;
#define eps 10e-10
int main(){
int ans = 0;
for(int i = 1; i < 10; ++i){
for(int j = 1; j < 10; ++j){
for(int r = 1; r < 10; ++r){
for(int k = 1; k < 10; k ++){
if(i == j || r == k)continue;
if(fabs( (i*10 + r)*1.0/(j*10+k) - (i*r*1.0)/(j*k)) < eps){
//printf("%d/%d : %d/%d\n", (i*10 + r),(j*10+k), i*r,(j*k));
ans++;
}
}
}
}
}
cout<<ans<<endl;
return 0;
}
奇怪的分式|2014年蓝桥杯B组题解析第六题-fishers的更多相关文章
- 啤酒和饮料|2014年蓝桥杯B组题解析第一题-fishers
啤酒和饮料|2014年第五届蓝桥杯B组题解析第一题-fishers 啤酒和饮料 啤酒每罐2.3元,饮料每罐1.9元.小明买了若干啤酒和饮料,一共花了82.3元. 我们还知道他买的啤酒比饮料的数量少,请 ...
- 第六届蓝桥杯JavaB组国(决)赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.分机号 X老板脾气古怪,他们公司的电话分机号都是3位数,老板规定,所有号码必须是降序排列,且不能有重复的数位.比如: 751,520, ...
- 第六届蓝桥杯JavaA组国(决)赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.胡同门牌号 小明家住在一条胡同里.胡同里的门牌号都是连续的正整数,由于历史原因,最小的号码并不是从1开始排的. 有一天小明突然发现了有 ...
- 奇怪的比赛|2012年蓝桥杯B组题解析第四题-fishers
(8')奇怪的比赛 某电视台举办了低碳生活大奖赛.题目的计分规则相当奇怪: 每位选手需要回答10个问题(其编号为1到10),越后面越有难度.答对的,当前分数翻倍:答错了则扣掉与题号相同的分数(选手必须 ...
- 0-1背包dp|波动数列|2014年蓝桥杯A组10-fishers
标题:波动数列 观察这个数列: 1 3 0 2 -1 1 -2 ... 这个数列中后一项总是比前一项增加2或者减少3. 栋栋对这种数列很好奇,他想知道长度为 n 和为 s 而且后一项总是比前一项增加a ...
- 数论+矩阵快速幂|斐波那契|2014年蓝桥杯A组9-fishers
标题:斐波那契 斐波那契数列大家都非常熟悉.它的定义是: f(x) = 1 .... (x=1,2) f(x) = f(x-1) + f(x-2) .... (x>2) 对于给定的整数 n 和 ...
- 思维|蚂蚁感冒|2014年蓝桥杯A组题解析第七题-fishers
标题:蚂蚁感冒 长100厘米的细长直杆子上有n只蚂蚁.它们的头有的朝左,有的朝右. 每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒. 当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行. 这些蚂蚁中,有 ...
- 全排列+字符串查找|扑克排序|2014年蓝桥杯A组题解析第六题-fishers
标题:扑克序列 A A 2 2 3 3 4 4, 一共4对扑克牌.请你把它们排成一行. 要求:两个A中间有1张牌,两个2之间有2张牌,两个3之间有3张牌,两个4之间有4张牌. 请填写出所有符合要求的排 ...
- 枚举+排序|神奇算式|2014年蓝桥杯A组题解析第三题-fishers
标题:神奇算式 由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成. 比如: 210 x 6 = 1260 8 x 473 = 3784 27 x 81 = 2187 都符合要求. ...
随机推荐
- 20144306《网络对抗》MAL_免杀原理与实践
一.基础问题回答 1.杀软是如何检测出恶意代码的? (1)特征码:类似于人的生物特征,恶意代码可能会包含一段或多端数据能代表其特征.杀软一般会对文件内容进行静态扫描,将文件内容与特征库进行匹配,来检测 ...
- 2018/03/20 每日一个Linux命令 之 cp
cp 命令用于复制文件/目录 cp [-参数] [复制文件] [复制成为的新文件] 参数(这里只介绍平常会用到的,之后的话遇到再回来补充) -f 覆盖已经存在的目标文件而不给出提示. -i 与-f选项 ...
- 优云软件助阵ArchSummit全球架构师峰会
由极客邦科技与 InfoQ 中国主办的 ArchSummit 全球架构师峰会深圳站,于 7 月 7 日 - 8 日在深圳华侨城洲际酒店举办. 本次大会特邀 100 多位国内外技术专家,与1000余名技 ...
- MyEclipse10.0 注册破解步骤
MyEclipse 10.0破解 激活(java编写,适用于装有java环境的各种操作系统,Windows,Linux,MacOS) =====[方法一]=====[第一步]:输入任意用户名[第二步] ...
- leetcode & lintcode 题解
刷题备忘录,for bug-free 招行面试题--求无序数组最长连续序列的长度,这里连续指的是值连续--间隔为1,并不是数值的位置连续 问题: 给出一个未排序的整数数组,找出最长的连续元素序列的长度 ...
- Javascript--运算符判断成绩运算
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 016-sed
行处理:一次处理一行.正则选定文本 ----->>sed处理格式:一.命令行格式:sed [options] 'command' files(如果没有则是通过管道)1.options: - ...
- 011-/etc/resolv.conf详解
- codeforces 461C
这题说的是 给了一张长方形的纸 1*n 然后可以按照不同的做法去折这个纸张 他有两种操作,操作1 给了一个pi 点 然后将左边的纸往右边折,第2种操作是给了一个L 和 R 然后计算出 L和R 之间的纸 ...
- python 模拟windows键盘按键的封装
代码:在执行的时候,把光标放在指定的地方,在此例中,点击运行后把光标放到结果区域,粘贴的时候是粘贴到光标所在的问题,如过是运行脚本在web元素输入框中输入的话,不能移动光标到其他位置 #encodin ...