uva 725

暴力法枚举,五重循环。

一开始因为空格问题WA了,要注意

#include <iostream>
#include <set>
#include <cstdio>
using namespace std;

int main(){
    int a,b,c,d,e,f,g,h,i,j,n;
    int cnt = 0;
    int div = 0,res;
    set<int> num;
    while(cin >> n && n!=0){
    if(cnt++) cout<<"\n";
    bool ans = false;
    for(f=0;f<10;f++){
        for(g=0;g<10;g++){
            if(g==f) continue;
            for(h=0;h<10;h++){
                if(h==f || h==g) continue;
                for(i=0;i<10;i++){
                    if(i==f || i==g || i==h) continue;
                    for(j=0;j<10;j++){
                        if(j==f || j==g || j==h || j==i) continue;
                        div = f*10000 + g*1000 + h*100 + i*10 +j;
                        num.clear();
                        num.insert(f);num.insert(j);num.insert(g);num.insert(h);num.insert(i);
                        res = n*div;int t =res;int cnt = 0;
                        bool flag = true;
                        while(res){
                            if(num.count(res%10)){flag=false;break;}
                            num.insert(res%10);
                            res/=10;
                            cnt ++;
                        }
                        if(!flag||cnt!=5) continue;
                        else {printf("%d / %d%d%d%d%d = %d\n",t,f,g,h,i,j,n);ans=true;}
                }
            }
        }
    }
    }
    if(!ans) printf("There are no solutions for %d.\n",n);
    //cout<<endl;
}
    return 0;
} 
时间: 2024-10-06 05:36:16

uva 725的相关文章

[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

UVA 725 UVA 10976 简单枚举

UVA 725 题意:0~9十个数组成两个5位数(或0开头的四位数),要求两数之商等于输入的数据n.abcde/fghij=n. 思路:暴力枚举,枚举fghij的情况算出abcde判断是否符合题目条件.(注意前导零的判断) 枚举的方法为 for(int i=1234;i<=100000/n;i++){} #include<cstdio> #include<cstring> int num[10]; bool check(int a,int b) { memset(num,0,

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, i

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

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

Uva 725 Division

0.不要傻傻的用递归去构造出一个五位数来,直接for循环最小到最大就好,可以稍微剪枝一丢丢,因为最小的数是01234 从1234开始,因为倍数n最小为2 而分子是一个最多五位数,所以分母应该小于五万. 所以for 1234 到50000-1就行了.哦还有个同理,fenmu*n>=十万的可以直接扔掉了 1.还有个判断重复的时候直接这样就好了 while(i) { num[i%10]=1; i/=10; } while(j) { num[j%10]=1; j/=10; } for(int i=1;i