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. js函数和jquery函数详解

    一:函数格式和用法: jQuery中所用到的:匿名函数的执行. (function(){ //这里忽略jQuery所有实现 })(); //the first function function fi ...

  2. DOM--3 DOM核心和DOM2 HTML(2)

    核心Node对象 由于继承扩展的关系,DOM中大部分对象会有Node对象的属性和方法,其中包括: nodeName DOM2核心中规定的每种nodeType预期的nodeName值 对象 返回值 El ...

  3. [工作中的设计模式]桥接模式bridge

    一.模式解析: 策略模式一节讲过,通过扩展持有者,使持有者形成抽象类,然后实现多个具体持有者,策略模式可以转化为桥接模式. 桥接模式定义为:将抽象部分与实现部分分离,使它们都可以独立的变化,在软件系统 ...

  4. footer元素

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. CodeForceS#276-B(求最大值)

    B. Valuable Resources   Many computer strategy games require building cities, recruiting army, conqu ...

  6. ural 1072. Routing

    1072. Routing Time limit: 1.0 secondMemory limit: 64 MB There is a TCP/IP net of several computers. ...

  7. iOS学习14之OC NSNumber + NSValue

    1.NSNumber 数值类. 作用:实现基本数据类型与OC对象类型的相互转化. 1> NSNumber创建对象 // 初始化方法 NSNumber *num1 = [[NSNumber all ...

  8. 【POJ2096】Collecting Bugs 期望

    [POJ2096]Collecting Bugs Description Ivan is fond of collecting. Unlike other people who collect pos ...

  9. Fault Tolerance —— Storm的故障容错性

     ——本文讲解了Storm故障容忍性(Fault-Tolerance)的设计细节:当Worker.节点.Nimbus或者Supervisor出现故障时是如何实现故障容忍性,以及Nimbus是否存在单点 ...

  10. Java classpath 如何自动添加web-content /lib下的jar包

    右键属性--Java build path--Libraries--add library--Web app libraries -- next --next -- ok