c++20701除法(刘汝佳1、2册第七章,暴搜解决)
| 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册第七章,暴搜解决)的更多相关文章
- 《算法竞赛入门经典》刘汝佳 C语言部分(前四章)“注解与习题” 之思索 -<1>
此书我购于去年的十一月份,也是经前人推荐购买的一本比较有用的书籍,在寒假自学此书,其简洁清晰高效的示例代码令我印象深刻,于是我打算把这本书的前四章后面的注解与习题(未给出标准解答)认真的去思索和研究, ...
- 刘汝佳 算法竞赛-入门经典 第二部分 算法篇 第五章 1(String)
第一题:401 - Palindromes UVA : http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8 ...
- ACM题目推荐(刘汝佳书上出现的一些题目)[非原创]
原地址:http://blog.csdn.net/hncqp/article/details/1758337 推荐一些题目,希望对参与ICPC竞赛的同学有所帮助. POJ上一些题目在http://16 ...
- 刘汝佳黑书 pku等oj题目
原文地址:刘汝佳黑书 pku等oj题目[转]作者:小博博Mr 一.动态规划参考资料:刘汝佳<算法艺术与信息学竞赛><算法导论> 推荐题目:http://acm.pku.edu. ...
- [置顶] 刘汝佳《训练指南》动态规划::Beginner (25题)解题报告汇总
本文出自 http://blog.csdn.net/shuangde800 刘汝佳<算法竞赛入门经典-训练指南>的动态规划部分的习题Beginner 打开 这个专题一共有25题,刷完 ...
- 刘汝佳 算法竞赛-入门经典 第二部分 算法篇 第五章 2(Big Number)
这里的高精度都是要去掉前导0的, 第一题:424 - Integer Inquiry UVA:http://uva.onlinejudge.org/index.php?option=com_onlin ...
- 刘汝佳 算法竞赛-入门经典 第二部分 算法篇 第六章 1(Lists)
127 - "Accordian" Patience 题目大意:一个人一张张发牌,如果这张牌与这张牌前面的一张或者前面的第三张(后面称之为一位置和三位置)的点数或花式相同,则将这张 ...
- 刘汝佳 算法竞赛-入门经典 第二部分 算法篇 第五章 3(Sorting/Searching)
第一题:340 - Master-Mind Hints UVA:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Item ...
- 求双连通分量的详解。(根据刘汝佳的训练指南p314)
无向图的双连通分量 点-双连通图:一个连通的无向图内部没有割点,那么该图是点-双连通图. 注意:孤立点,以及两点一边这两种图都是点-双连通的.因为它们都是内部无割点. 边-双连通图:一 ...
随机推荐
- Memcached集群代理软件magent安装小结
magent是一个memcached代理软件(memcached agent),又叫memagent. (magent is a simple but useful proxy program for ...
- Sql数据库帮组类
这段时间闲下来写了一些东西,重新写了一个简单的数据库帮组类 public class MyDBHelper { public static readonly string connString = C ...
- PHP入门 - - 06-->HTML的表格标签
表格标签<table> <table>的属性: Align: left, center, right (表格的)位置 Border: ...
- SpringMyBatis解析3-MapperFactoryBean
在使用mybatis的时候,我们获取dao的方式一般是这样: SqlSession session=sessionFactory.openSession(); PersonDao personDao= ...
- BZOJ 1901 Zju2112 Dynamic Rankings ——树状数组套主席树
[题目分析] BZOJ这个题目抄的挺霸气. 主席树是第一时间想到的,但是修改又很麻烦. 看了别人的题解,原来还是可以用均摊的思想,用树状数组套主席树. 学到了新的姿势,2333o(* ̄▽ ̄*)ブ [代 ...
- Dijkstra(变形) POJ 1797 Heavy Transportation
题目传送门 题意:求1到n的最大载重量 分析:那么就是最大路上的最小的边权值,改变优先规则. #include <cstdio> #include <algorithm> #i ...
- ACM ICPC 2015 Moscow Subregional Russia, Moscow, Dolgoprudny, October, 18, 2015 K. King’s Rout
K. King's Rout time limit per test 4 seconds memory limit per test 512 megabytes input standard inpu ...
- jquery layer弹出层插件
http://www.51xuediannao.com/js/jquery/jquery_layer/layer.html
- ccc tiledmap 获取元素属性
cc.Class({ extends: cc.Component, properties: { elementLable: { default: null, type : cc.Label }, ma ...
- ACM 数独
数独 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 数独是一种运用纸.笔进行演算的逻辑游戏.玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一 ...