20701除法
难度级别: B; 编程语言:不限;运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B
试题描述
    输入正整数n,按从小到大的顺序输出所有满足表达式abcde/fghij=n的abcde和fghij,其中a~j恰好为数字0~9的一个排列。 如果没有符合题意的数,输出0。本题所说的五位数可以包括前导0的,如01234在这里也称为五位数。
输入
一个正整数n 
输出
若干行,每行包括两个符合要求的五位正整数(每行的两个数先大后小),两数之间用一个空格隔开。 
输入示例
62
输出示例
79546 01283
94736 01528
其他说明
数据范围 2≤n≤79;题目中的从小到大指的是输出数据每行的第一个数是从小到大的顺序。 

据题意可知,这道题可以用暴搜解决,不过一般的暴搜在这题上要每一位都用一个循环,这道题2个数,每个数5位(万位可以为0),按理说10位数,10个循环,对不?但这里只要枚举一个数,另一个数可以求出来的。我们当然选择枚举小的那个数(其实哪个都一样),也就是除数,那么被除数应该用这个枚举出来的数×n;如果枚举大的那个数,也就是被除数,那么除数应该用这个枚举出来的数÷n。我们用p[10]数组存储这两个数,同时方便全查找是否有重复。这是最基础的办法,也是最好理解的办法。

这题是刘汝佳一册P114或刘汝佳二册P182的题,第七讲“暴力求解法”的第一题,只是讲了一下思路,没给代码。在这之前说一下,这道题为什么一定要只要枚举一个数。我们可以知道,如果枚举0-9的所有排列,会有10!=3628800轮循环,听起来枚举量还不大,是吧?如果只枚举一个,循环量会掉到5!=120轮,比比程序运算量吧!

下面是代码,用的最笨的暴搜,这题n最大79,而且每种数据可能性不多,所以暴搜可以做。

本程序枚举的是除数,然后乘出被除数。

#include<iostream>
using namespace std;
int n,a,b,p[10],h,i;
bool isit,ih;//isit检查每组被除数和除数是否合法,ih检查最后是否有结果
int main()
{
cin>>n;
for(p[0]=0;p[0]<=9;p[0]++)//除数万位
for(p[1]=0;p[1]<=9;p[1]++)//除数千位
for(p[2]=0;p[2]<=9;p[2]++)//除数百位
for(p[3]=0;p[3]<=9;p[3]++)//除数十位
for(p[4]=0;p[4]<=9;p[4]++)//除数个位
{
if(p[0]!=p[1] && p[0]!=p[2] && p[0]!=p[3] && p[0]!=p[4] && p[1]!=p[2] && p[1]!=p[3] && p[1]!=p[4] && p[2]!=p[3] && p[2]!=p[4] && p[3]!=p[4])//查找除数是否有重复数字。其实这样可以省去很多后面的被除数运算量!如果算完除数有重复还算被除数,一看很多重复,会做很多无用功。
{
a=p[0]*10000+p[1]*1000+p[2]*100+p[3]*10+p[4];//计算除数
b=a*n;//算出被除数
if(9999<b && b<100000) //确保10000<=被除数<=99999,想一想,被除数为什么不能低于1w?
{
p[5]=b/10000;//以下是分离被除数
p[6]=(b%10000)/1000;
p[7]=(b%1000)/100;
p[8]=(b%100)/10;
p[9]=b%10;
isit=1;//看看这组数是不是无重复数字
for(h=0;h<=9;h++)
for(i=h+1;i<=9;i++)
if(p[h]==p[i]) isit=0;//被除数和除数全排查找有没有重复
if(isit)//如果是1就无重复
{
ih=1;//确保有结果
for(i=5;i<=9;i++) cout<<p[i];//切记先打被除数!忽略了一个事,这里可以直接输出b
cout<<' ';
for(i=0;i<=4;i++) cout<<p[i];//后打除数!
cout<<endl;
}
}
}
}
if(!ih) cout<<'0';//没结果出0
return 0;
}

c++20701除法(刘汝佳1、2册第七章,暴搜解决)的更多相关文章

  1. 《算法竞赛入门经典》刘汝佳 C语言部分(前四章)“注解与习题” 之思索 -<1>

    此书我购于去年的十一月份,也是经前人推荐购买的一本比较有用的书籍,在寒假自学此书,其简洁清晰高效的示例代码令我印象深刻,于是我打算把这本书的前四章后面的注解与习题(未给出标准解答)认真的去思索和研究, ...

  2. 刘汝佳 算法竞赛-入门经典 第二部分 算法篇 第五章 1(String)

    第一题:401 - Palindromes UVA : http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8 ...

  3. ACM题目推荐(刘汝佳书上出现的一些题目)[非原创]

    原地址:http://blog.csdn.net/hncqp/article/details/1758337 推荐一些题目,希望对参与ICPC竞赛的同学有所帮助. POJ上一些题目在http://16 ...

  4. 刘汝佳黑书 pku等oj题目

    原文地址:刘汝佳黑书 pku等oj题目[转]作者:小博博Mr 一.动态规划参考资料:刘汝佳<算法艺术与信息学竞赛><算法导论> 推荐题目:http://acm.pku.edu. ...

  5. [置顶] 刘汝佳《训练指南》动态规划::Beginner (25题)解题报告汇总

    本文出自   http://blog.csdn.net/shuangde800 刘汝佳<算法竞赛入门经典-训练指南>的动态规划部分的习题Beginner  打开 这个专题一共有25题,刷完 ...

  6. 刘汝佳 算法竞赛-入门经典 第二部分 算法篇 第五章 2(Big Number)

    这里的高精度都是要去掉前导0的, 第一题:424 - Integer Inquiry UVA:http://uva.onlinejudge.org/index.php?option=com_onlin ...

  7. 刘汝佳 算法竞赛-入门经典 第二部分 算法篇 第六章 1(Lists)

    127 - "Accordian" Patience 题目大意:一个人一张张发牌,如果这张牌与这张牌前面的一张或者前面的第三张(后面称之为一位置和三位置)的点数或花式相同,则将这张 ...

  8. 刘汝佳 算法竞赛-入门经典 第二部分 算法篇 第五章 3(Sorting/Searching)

    第一题:340 - Master-Mind Hints UVA:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Item ...

  9. 求双连通分量的详解。(根据刘汝佳的训练指南p314)

    无向图的双连通分量 点-双连通图:一个连通的无向图内部没有割点,那么该图是点-双连通图.         注意:孤立点,以及两点一边这两种图都是点-双连通的.因为它们都是内部无割点. 边-双连通图:一 ...

随机推荐

  1. ubuntu使用笔记

    查看自己系统版本: 使用命令:cat /proc/version 查看:proc目录下记录的当前系统运行的各种数据,version记录的版本信息可以直接通过cat查看到,还可以看到我的gcc版本呢. ...

  2. hdu2476 String painter(区间dp)

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2476 Problem Description There are two strings ...

  3. Python与Hack之Unix口令

    1.在实验时候,先导入crypt库:必须在Unix环境下才能实现这个模块 2.代码贴一下,以后有了Unix环境试试吧: import cryptimport syssys.modules['Crypt ...

  4. POJ 2503 字典树

    题目链接:http://poj.org/problem?id=2503 题意:给定一个词典,输入格式为[string1' 'string2]  意思是string2的值为string1. 然后给定一波 ...

  5. js动画实现侧边栏分享

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  6. ural 1252. Sorting the Tombstones

    1252. Sorting the Tombstones Time limit: 1.0 secondMemory limit: 64 MB There is time to throw stones ...

  7. python程序设计语言笔记 第一部分 程序设计基础

    1.1.1中央处理器(CPU) cpu是计算机的大脑,它从内存中获取指令然后执行这些指令,CPU通常由控制单元和逻辑单元组成. 控制单元用来控制和协调除cpu之外的其他组件的动作. 算数单元用来完成数 ...

  8. BZOJ3583 : 杰杰的女性朋友

    将$I$转置,设$G=OI$,则$ans=G^0+G^1+...+G^d$. 注意到$G^d=O(IO)^{d-1}I$,而$IO$是大小为$k\times k$的矩阵,可以通过倍增在$O(k^3\l ...

  9. Unity正式发布首个“实验性”VR编辑器,支持HTC Vive和Oculus Rift

    Unity今天正式推出"实验性"VR编辑器.据悉,EditorVR是Unity游戏引擎中的一个组件,可让开发者在虚拟现实环境中开发游戏.为何要称之为"实验性"? ...

  10. BZOJ 1029 & 丝帛贪心

    题意: 小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者.但是T部落的基地里已经有N个建筑设 施受到了严重的损伤,如果不尽快修复的话,这些建 ...