uva 10624(dfs)
2014-08-30 10:24
246 查看
题意:先输入n和m,要求找到一个m位的整数能够让一个数i(n <= i <= m)能够被整数的前i位整除,否则输出-1.
题解:因为要字典序最小的,所以dfs从0到9依次放入计算判断,判断是否能整除可以先自己模拟运算,很容易找到规律。
#include <stdio.h>
#include <string.h>
using namespace std;
const int N = 100;
int val
, n, m, flag;
int judge(int cur) {
int k = 0;
for (int i = 1; i <= cur; i++) {
k = k * 10 + val[i];
k = k % cur;
}
if (!k)
return 1;
else
return 0;
}
void dfs(int cur) {
if (cur > m) {
flag = 1;
return;
}
for (int i = 0; i <= 9; i++) {
if (cur == 1 && i == 0)
continue;
val[cur] = i;
if (cur >= n) {
if (judge(cur))
dfs(cur + 1);
else
continue;
}
else
dfs(cur + 1);
if (flag)
return;
}
}
int main() {
int t, cases = 1;
scanf("%d" ,&t);
while (t--) {
scanf("%d%d", &n, &m);
flag = 0;
dfs(1);
printf("Case %d: ", cases++);
if (flag) {
for (int k = 1; k <= m; k++)
printf("%d", val[k]);
printf("\n");
}
else
printf("-1\n");
}
return 0;
}
题解:因为要字典序最小的,所以dfs从0到9依次放入计算判断,判断是否能整除可以先自己模拟运算,很容易找到规律。
#include <stdio.h>
#include <string.h>
using namespace std;
const int N = 100;
int val
, n, m, flag;
int judge(int cur) {
int k = 0;
for (int i = 1; i <= cur; i++) {
k = k * 10 + val[i];
k = k % cur;
}
if (!k)
return 1;
else
return 0;
}
void dfs(int cur) {
if (cur > m) {
flag = 1;
return;
}
for (int i = 0; i <= 9; i++) {
if (cur == 1 && i == 0)
continue;
val[cur] = i;
if (cur >= n) {
if (judge(cur))
dfs(cur + 1);
else
continue;
}
else
dfs(cur + 1);
if (flag)
return;
}
}
int main() {
int t, cases = 1;
scanf("%d" ,&t);
while (t--) {
scanf("%d%d", &n, &m);
flag = 0;
dfs(1);
printf("Case %d: ", cases++);
if (flag) {
for (int k = 1; k <= m; k++)
printf("%d", val[k]);
printf("\n");
}
else
printf("-1\n");
}
return 0;
}
相关文章推荐
- UVA 10624 - Super Number(DFS)
- UVA10624 - Super Number(dfs)
- UVA.297 Quadtrees (四分树 DFS)
- uva--729+dfs回溯
- uva 301 Transportation 铁路公司的阳谋 纯dfs暴力
- UVA-129 Krypton Factor(dfs)
- uva 10010 Where's Waldorf?(DFS字符串查找)
- UVALive 6257 Chemist's vows --一道题的三种解法(模拟,DFS,DP)
- uva 10422 Knights in FEN(DFS + 回溯)
- UVA - 705 Slash Maze(dfs+floodfiil)
- UVA 1508 - Equipment 状态压缩 枚举子集 dfs
- UVA 1548 - The Game of Master-Mind(dfs剪枝)
- UVa 699 The Falling Leaves (DFS遍历二叉树)
- UVALive 5116 Dividing Stones(dfs + 打表)
- UVA 225 Golygons (DFS)
- uva 784 Maze Exploration(DFS遍历图)
- UVA 657 The die is cast (DFS*2)
- UvaLive6661 Equal Sum Sets dfs或dp
- uva 165 Stamps (DFS)
- UVa 129 - Krypton Factor (DFS 回溯)