UVA 471 Magic Numbers(枚举)

来源:互联网 发布:淘宝 新增网站推广 编辑:程序博客网 时间:2024/06/05 18:56

题意:

s1/s2=N,s1、s2、N都是各个位数上数字不相同的整数。
给定N,求有多少个这样的式子并输出。

思路:

其实最大的数只能是9876543210,所以我们只要暴力枚举s2,枚举过程中判断s1、s2是否符合题目要求即可。

AC代码

#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <cstdlib>using namespace std;typedef long long ll;const ll MAX = 9876543210;ll num;bool vis[10];bool judge(ll x) {    if(x > MAX) return false;    memset(vis, false, sizeof(vis));    while(x) {        if(vis[x%10]) return false;        vis[x%10] = true;        x /= 10;    }    return true;}int main() {    int T;    ll div, factor;    scanf("%d", &T);    while(T--) {        scanf("%lld", &num);        div = 0;        for(ll i = 1; div <= MAX; i++) {            factor = i, div = factor*num;            if(judge(div) && judge(factor))                printf("%lld / %lld = %lld\n", div, factor, num);        }        if(T) puts("");    }    return 0;}
0 0
原创粉丝点击