您的位置:首页 > 其它

uva 471 - Magic Numbers(搜索)

2013-12-22 15:32 351 查看
题目连接:uva 471 - Magic Numbers

题目大意:给出一个数n,问有多少组数满足ans / i = n,要求说ans和i为Magic Number,即组成的数字没有重复的。

解题思路:因为Magic Number组成的数字互相不想同,所以最大的情况也就9876543210,检索的范围大大减小了。

#include <stdio.h>
#include <string.h>

typedef long long ll;
const ll INF = 9876543210;

bool judge(ll c) {
int v[15];
memset(v, 0, sizeof(v));
while (c) {
int t = c % 10;
if (v[t]) return false;
v[t]++;
c /= 10;
}
return true;
}

int main () {
int cas;
ll n, ans;
scanf("%d", &cas);
while (cas--) {
scanf("%lld", &n);
for (ll i = 1; i <= INF; i++) {
ans = i * n;
if (ans > INF) break;
if (judge(ans) && judge(i))
printf("%lld / %lld = %lld\n", ans, i, n);
}
if (cas) printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: