本来想刷道签到题结果被卡住了。这题题意描述有点问题,数字又不一定都是个位数。。。难道是我英语太差了? digits就表示0~9这几个数?唉,还是太弱了。这题就是用了一个bfs,应该说还是有点意思的,直接模拟复杂度肯定爆炸,而且还不好判无解的情况。而bfs复杂度是n*10的,因为%n相同的状态搜索过程都是相同的,相当于一堆循环节,而无解的情况也好判了,状态都搜完后还没有%n为0的就无解了,因为剩下的都是一堆循环节,也不可能搜到解了。

#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=;
struct node{
int m,f,x;
}q[maxn],A,B;
int cas,n,m,can[],head,tail,vis[maxn],flag;
void print(int x){
if(!x)return;
print(q[x].f);
printf("%d",q[x].x);
}
int main(){
while(scanf("%d%d",&n,&m)!=EOF){
++cas;flag=;int x;
memset(vis,,sizeof(vis));
memset(can,,sizeof(can));
for(int i=;i<=m;++i){
scanf("%d",&x);can[x]=;
}
printf("Case %d: ",cas);
head=tail=;
for(int i=;i<=;++i)if(!can[i]){
A.m=i%n;A.x=i;A.f=;
if(!A.m){printf("%d\n",i);flag=;break;}
if(!vis[A.m]){
q[++tail]=A;vis[A.m]=;
}
}
if(flag)continue;
while(head<tail){
B=q[++head];
for(int i=;i<=;++i)if(!can[i]){
A.m=(B.m*+i)%n;
A.x=i;A.f=head;
if(vis[A.m])continue;
vis[A.m]=;q[++tail]=A;
if(!A.m){flag=;break;}
}
if(flag)break;
}
if(flag){
print(tail);printf("\n");
}
else{puts("-1");}
}
//system("pause");
return ;
}
/*
2345 3
7 8 9
100 1
0
*/

uva1653的更多相关文章

随机推荐

  1. python 数据类型 之 tuple 元组

    python 3.6.5 元组的特性和定义 与列表类型 只不过 [  ] 改成了() 特性: 1.不可变(元组本身不可变,但是可以存可变类型的element){猜测因为可变element的地址不可变而 ...

  2. JAVA课堂练习-动手动脑--数组

    1.阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照. 源代码: public class PassArray { public stat ...

  3. 如何在Fragment中获取context

    文章转载自http://blog.csdn.net/demonliuhui/article/details/51511136 这里仅供自己学习参考: Context,中文直译为“上下文”,SDK中对其 ...

  4. PAT 1081 检查密码(15) (代码+思路)

    1081 检查密码(15 分) 本题要求你帮助某网站的用户注册模块写一个密码合法性检查的小功能.该网站要求用户设置的密码必须由不少于6个字符组成,并且只能有英文字母.数字和小数点 .,还必须既有字母也 ...

  5. hdu 1394(线段树) 最小逆序数

    http://acm.hdu.edu.cn/showproblem.php?pid=1394 给出一列数组,数组里的数都是从0到n-1的,在依次把第一个数放到最后一位的过程中求最小的逆序数 线段树的应 ...

  6. hdu 1072(BFS) 有炸弹

    http://acm.hdu.edu.cn/showproblem.php?pid=1072 题目大意是在一个n×m的地图上,0表示墙,1表示空地,2表示人,3表示目的地,4表示有定时炸弹重启器. 定 ...

  7. iOS.KVC.setValue:forKey:

    Foundation Framework 定义了 NSObject(NSKeyValueCoding), - (void)setValue:(id)value forKey:(NSString *)k ...

  8. CH6202 黑暗城堡

    一道最短路+生成树 原题链接 实际上就是生成树的中每个点到节点\(1\)的距离等于原图中这个点到节点\(1\)的最短距离,求这样的生成树的棵数. 先用\(SPFA\)或\(Dijkstra\)求出所有 ...

  9. 工具类Utils的单元测试方式

    数据质量功能已经开发完毕,但是要实现单元测试覆盖率80%以上,其他的还好,只是这个工具类实在让我摸不着头脑,其实工具类的单元测试是最简单的,只是自己想复杂了而已: 无返回值模拟: 有返回值模拟: 异常 ...

  10. Two Sum LT1

    Given an array of integers, return indices of the two numbers such that they add up to a specific ta ...