UVa 725 Division --- 简单枚举

题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=666

/* UVa 725 Division --- 简单枚举 */
#include <cstdio>
#include <cstring>

bool used[10];

/* 判断传进来的两个数是否满足条件 */
bool judge(int a, int b)
{
    if (a > 98765)
        return 0;
    memset(used, 0, sizeof used);
    if (b < 10000)
        used[0] = 1;
    while (b){
        used[b % 10] = 1;
        b /= 10;
    }
    while (a){
        used[a % 10] = 1;
        a /= 10;
    }
    int sum = 0;
    for (int i = 0; i < 10; ++i)
        sum += used[i];
    return sum == 10;
}

int main()
{
    int n, kase = 0;

    while (scanf("%d", &n)== 1 && n){
        if (kase++){
            printf("\n");
        }
        int cnt = 0;
        for (int i = 1234; i <= 54321; ++i){
            if (judge(i*n, i)){
                printf("%05d / %05d = %d\n", i*n, i, n);
                ++cnt;
            }
        }//for(i)
        if (cnt == 0){
            printf("There are no solutions for %d.\n", n);
        }
    }

    return 0;
}
时间: 2024-10-07 06:10:27

UVa 725 Division --- 简单枚举的相关文章

UVa 725 - Division(枚举简单题)

今日无事,写篇日记.这是我写的第一道uva题(uva是算法竞赛入门经典里使用例题的题目来源),正值暑假,前几天看了书上中文题目和解析,玩了几日san11,又重拾起acm,今天晚上写了一下还是花了点时间. 题目:给你一个数字n,用0~9,10个数字组成两个五位数,使得他们的商为n,按顺序输出所有结果. 1.这里的除法不是c中的除(/)而是整除,一开始以为是整除,但那样79546 / 01283 = 62是一组解,79546+1 / 01283 = 62也是一组解了. 2.复杂度:枚举分子然后分子乘

UVA 725 Division(hash+枚举)

题目大意: 就是说给你一个abcde/fghij = n的表达式,给你一个n,让你求出有多少个这样的式子. 解题思路: 最为简单的枚举了,要注意到我们只需要枚举出来fghij就可以了,因为abcde=fghij*n,这样的话,时间复杂度由10!就 降低到了5!,在枚举结束后,我们只需要判断0-9这些数字是否都出现了且仅出现一次即可.然后对于超过5位的数字,我们 直接break掉. 这道题的输出一定要注意那个前导0,,一开始忘记了,WA了两次,然后果断用setw(5)和setfill('0')给搞

uva 725 DIVISION (暴力枚举)

我的56MS 1 #include <cstdio> 2 #include <iostream> 3 #include <string> 4 #include <cstring> 5 #include <queue> 6 #include <vector> 7 #include <map> 8 #include <cmath> 9 using namespace std; 10 11 #define MEM(a

uva 725 Division(暴力枚举) 解题心得

原题: Description Write a program that finds and displays all pairs of 5-digit numbers that between them use the digits 0 through 9once each, such that the first number divided by the second is equal to an integer N, where . That is, abcde / fghij =N w

UVA 725 Division ( 找出 abcde / fghij = N的形式—— 暴力枚举 )

Division Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Description 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 divide

uva 725 Division(暴力枚举)

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 . That is, abcde / fghij =

暴力枚举 UVA 725 Division

题目传送门 1 /* 2 暴力:对于每一个数都判断,是否数字全都使用过一遍 3 */ 4 #include <cstdio> 5 #include <iostream> 6 #include <algorithm> 7 #include <cmath> 8 #include <cstring> 9 #include <string> 10 #include <map> 11 #include <set> 12

uva 725 Division(除法)暴力法!

uva 725  Division(除法) A - 暴力求解 Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Description 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 t

[2016-02-18][UVA][725][Division]

时间:2016-02-18 22:41:48 星期四 题目编号:UVA 725 题目大意:给定 n,输出所有情况:abcde / fghij = n ,使得 a~j为0~9的一个排列 方法: 枚举fghij ,通过 fghij * n 得到 abcde,看是否满足 前导0输出是 %05d 解题过程遇到问题: 每组数据间有空行,最后一组数据后面没有空行 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2