UVa725 Division(除法)

2023-10-28 22:36
文章标签 除法 division uva725

本文主要是介绍UVa725 Division(除法),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、题目

Write a program that finds and displays all pairs of 5-digit numbers that between them use the digits 0 through 9 once each, such that the first number divided by the second is equal to an integer N N N, where 2 ≤ N ≤ 79 2 ≤ N ≤ 79 2N79. That is,
a b c d e f g h i j = N \frac{abcde}{fghij} = N fghijabcde=N
where each letter represents a different digit. The first digit of one of the numerals is allowed to be
zero.

Input

Each line of the input file consists of a valid integer N N N. An input of zero is to terminate the program.

Output

Your program have to display ALL qualifying pairs of numerals, sorted by increasing numerator (and,
of course, denominator).

Your output should be in the following general form:

xxxxx / xxxxx = N
xxxxx / xxxxx = N
.
.

In case there are no pairs of numerals satisfying the condition, you must write ‘There are no
solutions for N.
’. Separate the output for two different values of N N N by a blank line.

Sample Input

61
62
0

Sample Output

There are no solutions for 61.79546 / 01283 = 62
94736 / 01528 = 62

725 - Division

2、题意

输入正整数 n n n,按从小到大的顺序输出所有形如 a b c d e / f g h i j = n abcde/fghij = n abcde/fghij=n 的表达式,其中 a a a ~ j j j 恰好为数字 0 ~ 9 的一个排列(可以有前导0), 2 ≤ n ≤ 79 2 \le n \le 79 2n79

3、分析

暴力枚举,但是没有必要枚举 0 ~ 9 的所有排列,只需要枚举 f g h i j fghij fghij 就可以算出 a b c d e abcde abcde,然后判断是否所有数字的偶不相同即可。枚举量从 10! - 3628800 降低至不到1万,且当 a b c d e abcde abcde f g h i j fghij fghij 加起来超过 10 位时可以终止枚举。

4、代码实现

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;int main() {int n, kase = 0;char buf[99];while(scanf("%d", &n) == 1 && n) {int cnt = 0;if(kase++) printf("\n");for(int fghij = 1234; ; fghij++) {int abcde = fghij * n;sprintf(buf, "%05d%05d", abcde, fghij);if(strlen(buf) > 10) break;sort(buf, buf+10);bool ok = true;for(int i = 0; i < 10; i++)if(buf[i] != '0' + i) ok = false;if(ok) {cnt++;printf("%05d / %05d = %d\n", abcde, fghij, n);}}if(!cnt) printf("There are no solutions for %d.\n", n);}return 0;
}

这篇关于UVa725 Division(除法)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/296409

相关文章

高精度计算(代码加解析,洛谷p1601,p1303)除法待更新

目录 高精度加法 高精度减法 高精度乘法 高精度加法 我们知道在c++语言中任何数据类型都有一定的表示范围。当两个被加数很大时,正常加法不能得到精确解。在小学,我们做加法都采用竖式方法。那么我们也只需要按照加法进位的方式就能得到最终解。 8 5 6+ 2 5 5-------1 1 1 1 加法进位: c[i] = a[i] + b[i];if(c[i] >=

[LeetCode] 399. Evaluate Division

题:https://leetcode.com/problems/evaluate-division/ 题目大意 给定 equations 和式子结果 values ,求 queries 的结果。 思路 dfs 先构建一个图。 queries 是两点之间 边的权重 乘积。 class Solution {double dfs(List<Double> resList,Map<String

信息学奥赛初赛天天练-83-NOIP2014普及组-基础题2-输入设备、输出设备、操作系统、二进制、整数除法、while、do while循环

1 NOIP 2014 普及组 基础题2 4 以下哪一种设备属于输出设备( ) A 扫描仪 B 键盘 C 鼠标 D 打印机 5 下列对操作系统功能的描述最为完整的是( ) A 负责外设与主机之间的信息交换 B 负责诊断机器的故障 C 控制和管理计算机系统的各种硬件和软件资源的使用 D 将没有程序编译成目标程序 11 下列各无符号十进制整数中,能用八位二进制表示的数中最大的是( ) A 296

简单除法(简单枚举优化)

//输入正整数n按从小到大的顺序输出所有形如abcde/fghij=n的表达式其中a到j正好是数字0到9的一个排列 //输入62输出 //79546/01283=62 //94739/01528=62 //虽然是暴力求解,但是做了一些优化。 #include<iostream>#include<algorithm>using namespace std;void panduan(i

UESTC 1712 Easy Problem With Numbers 除法对和数取模,分解,线段树

附上神牛原版思路: 如果这个题只有乘法,那么你肯定会做吧?线段树更新区间查找区间。 那么有除法呢?当一个数x和m互质的时候,除以x可以改为乘以x的逆元。(至于互质的数求逆元用扩展欧几里德,这个网上可以随便找到) 但是这题并不能保证除的数与m互质吧?什么时候x与m不互质呢?就是x与m含有公因子吧? 那么我们一开始就把m分解,分解出来m有p1,p2,p3,p4...pn等一

Mysql 报错 1365 - Division by 0

Mysql 报错 1365 - Division by 0 解决办法 直接运行一下命令 set sql_mode=(select REPLACE(@@sql_mode,'ERROR_FOR_DIVISION_BY_ZERO',''));

If We Were a Child Again(大数除法、求余)

Description         “Oooooooooooooooh!          If I could do the easy mathematics like my school days!!          I can guarantee, that I’d not make any mistake this time!!”          Says a smar

编写程序,采用辗转相除法求解两个正整数的最大公约数

--编写程序,采用辗转相除法求解两个正整数的最大公约数DECLARE @a int,@b intSELECT @a=12,@b=21DECLARE @temp intprint cast(@a as varchar(5))+'和'+cast(@b as varchar(5))+'的最大公约数是'if @a<@b --或者是select @temp=@a,@a=@b,@b=@tempb

算数操作符(除法操作符和取模操作符)

目录 / --- 除法操作符 整数除法 代码举例说明 代码验证  浮点数除法 代码举例说明 代码验证 % ---  取模操作符 代码举例说明 代码验证 除法操作符和取模操作符的相关案例 / --- 除法操作符 整数除法 除号的两端都是整数,执行的就是整数除法整数除法的运行规则:只保留商,去掉余数 代码举例说明 int r = 7 / 2;pri

553. Optimal Division 最优除法

https://leetcode-cn.com/problems/optimal-division/description/ 思路:x1/x2/…/xn,无论在之间加多少个括号,x1总是作为被除数,x2总是作为除数,因此结果最大的做法是将x3到xn的所有除法转换为乘法,即x1/(x2/…/xn)=x1/x2*x3*…*xn. string optimalDivision(vector<int>