uva 725  Division

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, where 2<=N <=79. That is,

abcde / fghij =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. 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 by a blank line. 
Sample Input 
61 
62 
0 
Sample Output 
There are no solutions for 61.

79546 / 01283 = 62 
94736 / 01528 = 62

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
bool com(char a, char b)
{
return a>b;
}
char ans[11]="9876543210";
char s[11];
int main()
{
int n, pro, m=0;
bool flag=false;
while(scanf("%d", &n)!=EOF&&n)
{
if(m>0) printf("\n");
m++;//输出技巧
flag=false;
for(int i=1234; i<=50000; i++)
{
pro=n*i;
if(pro>98765) break;
if(i<10000)
sprintf(s, "%d%d%d", 0, i, pro);
else
sprintf(s, "%d%d", i, pro);
sort(s, s+10, com);
if(strcmp(s, ans)==0)
{
printf("%d / %05d = %d\n", pro, i, n);
flag=true;
}
}
if(!flag)
printf("There are no solutions for %d.\n", n);
}
return 0;
}

这题属于入门级暴力求解法。在进行暴力求解枚举时,我们应该进行适当的分析。比如这一题,两个五位数都可以有前导零。我们可以分析一下被除数是不可能前导零的。证明很容易,假设被除数有前导零,说明被除数只是四位数,那么除数必须要五位数,很明显不合题意,因为N>=2; 
在进行枚举时,我们可以发现被除数枚举到50000即可(还可以更小,但感觉50000已经优化的可以了)。一旦n*i大于被除数,即可终止for循环。 
这是用到的技巧的输出技巧,sprintf,sort; 
不得不说,UVA是很严格的,我第一次提交时WA,后来debug是发现我答案多了一行空格。空格处理方法见代码。 
我的主要思路是把含有前导零的除数和不含有前导零的除数分开处理。输入到字符数组里,然后sort排序。先定义一个0-9的字符数组(已经排好序列),然后用strcmp比较即可,我感觉我的这种方法比网上的其他代码简洁而且比较好理解。如有不同见解,请在评论中告知。

UVA725 Division (暴力求解法入门)的更多相关文章

  1. MATLAB线性方程组的迭代求解法

    MATLAB线性方程组的迭代求解法 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 一.实验目的 1. 借助矩阵按模最大特征值,判断解方程组的Jacobi ...

  2. hdu 4291(矩阵+暴力求循环节)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4291 思路:首先保留求出循环节,然后就是矩阵求幂了. #include<iostream> ...

  3. Blue Jeans---poj3080(kmp+暴力求子串)

    题目链接:http://poj.org/problem?id=3080 题意就是求n个长度为60的串中求最长公共子序列(长度>=3):如果有多个输出字典序最小的: 我们可以暴力求出第一个串的所有 ...

  4. UVA.725 Division (暴力)

    UVA.725 Division (暴力) 题意分析 找出abcdefghij分别是0-9(不得有重复),使得式子abcde/fghij = n. 如果分别枚举每个数字,就会有10^10,肯定爆炸,由 ...

  5. Java【基础学习】之暴力求素数【用数组返回】

    Java[基础学习]之暴力求素数[用数组返回] */ import java.util.*; public class Main{ public static void main(String[] a ...

  6. UVA725 Division 除法【暴力】

    题目链接>>>>>> 题目大意:给你一个数n(2 <= n <= 79),将0-9这十个数字分成两组组成两个5位数a, b(可以包含前导0,如02345 ...

  7. poj 2187 Beauty Contest (凸包暴力求最远点对+旋转卡壳)

    链接:http://poj.org/problem?id=2187 Description Bessie, Farmer John's prize cow, has just won first pl ...

  8. Poj 2096 (dp求期望 入门)

    / dp求期望的题. 题意:一个软件有s个子系统,会产生n种bug. 某人一天发现一个bug,这个bug属于某种bug,发生在某个子系统中. 求找到所有的n种bug,且每个子系统都找到bug,这样所要 ...

  9. LightOJ1214 Large Division —— 大数求模

    题目链接:https://vjudge.net/problem/LightOJ-1214 1214 - Large Division    PDF (English) Statistics Forum ...

随机推荐

  1. bootstrap-01-学习记录

    1.bootstrap所有插件依赖JQ,必须在JQ之后引入. 2.bootstrap分预编译版(css,js,fonts)和源码版(less,js,fonts,dist->预编译版内容,docs ...

  2. jQuery关于复选框的基本小功能

    这里是我初步学习jquery后中巨做的一个关于复选框的小功能: 点击右边选项如果勾上,对应的左边三个小项全部选中,反之全不选, 左边只要有一个没选中,右边大项就取消选中,反之左边全部选中的话,左边大项 ...

  3. Java中泛型的运用实例

    package example6; import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;impor ...

  4. django的render的特殊用法

    以前都是将模板渲染好, 传输到前端, 但是现在前后端分离了, 模板渲染引擎还有用, 而且很好用. 比如在渲染一个表格的时候, 每一行都有两个操作按钮, 并且这个按钮上是有a标签的 你可以使用字符串拼接 ...

  5. MapReduce输入输出的处理流程及combiner

    MapReduce 的输入输出 MapReduce 框架运转在<key,value> 键值对上,也就是说,框架把作业的输入看成是一组<key,value>键值对,同样也产生一组 ...

  6. opencv3 学习五 - 合并与分割通道

    合并与分割通道 程序如下 #include "opencv2/opencv.hpp" using namespace cv; int main() { Mat original = ...

  7. Django自定制分页功能

    URL: """django_paginner URL Configuration The `urlpatterns` list routes URLs to views ...

  8. 选择排序,C语言实现

    选择排序是不稳定排序,时间复杂度为O(n^2). 选择排序类似插入排序,把数组分为两部分,一部分已经排好序,一部分未排序. 刚开始的时候所有的元素都未排序,已排序的部分为空.就好像你手里有十张牌,左手 ...

  9. ARP级ping命令:arping

    一.工作原理 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议,是网络链路层的协议,在局域网中使用.主机发送信息时将包 ...

  10. 20145202马超 2016-2017-2 《Java程序设计》第二次实验

    去年完成的一部分(http://www.cnblogs.com/tuolemi/p/5728826.html) 今年我又从新做的,这是分别5个问题做出来的结果 下面这个是去年没有做的,是用来建模的,感 ...