uva1653
本来想刷道签到题结果被卡住了。这题题意描述有点问题,数字又不一定都是个位数。。。难道是我英语太差了? 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的更多相关文章
随机推荐
- Spring Boot学习笔记2——基本使用之最佳实践[z]
前言 在上一篇文章Spring Boot 学习笔记1——初体验之3分钟启动你的Web应用已经对Spring Boot的基本体系与基本使用进行了学习,本文主要目的是更加进一步的来说明对于Spring B ...
- python sockerserver tcp 文件下载 udp
#tcp serverclass MyHandler(socketserver.BaseRequestHandler): def handle(self): # 通信循环 while True: tr ...
- python 三元表达式、列表推导式、生成器表达式、递归、匿名函数、内置函数
http://www.cnblogs.com/linhaifeng/articles/7580830.html 三元表达式.列表推导式.生成器表达式.递归.匿名函数.内置函数
- js Map和Set
Map Map是一组键值对的结构,具有极快的查找速度.JavaScript的对象有个小问题,就是键必须是字符串.但实际上Number或者其他数据类型作为键也是非常合理的.为了解决这个问题,最新的ES6 ...
- Shell脚本中$0、$?、$!等的意义
变量说明$$ Shell本身的PID(ProcessID)$! Shell最后运行的后台Process的PID$? 最后运行的命令的结束代码(返回值)$- 使用Set命令设定的Flag一览$* 所有参 ...
- 数据存储(直接写入、NSUserDefaults、NSkeyedArchiver)
ios中常用文件存取的方法有: 1.直接写文件的方式,可以存储的对象有NSString.NSArray.NSDictionary.NSData.NSNumber,数据全部存放在一个属性列表文件(*.p ...
- http协议(四)http常用状态码
一:http状态码 表示客户端http请求的返回结果.标记服务器端的处理是否正常.通知出现的错误等工作 状态码的类别如下: http状态码种类繁多,大概有60多种,实际上经常使用的只有14种,下面为一 ...
- holiday(假期)_题解
holiday(假期) —— 一道妙题(codevs3622) Description 经过几个月辛勤的工作,FJ 决定让奶牛放假.假期可以在1…N 天内任意选择一段(需要连续),每一天都有一个享 ...
- qrcode解决方案大全
QRCODE解决方案 1.delphi原生QRCode.pas 2.delphi编写http服务器实现QRcode请求生成图片,http下载 3.delphi编写cgi程序,加载到apache服务器 ...
- DataTable表连接
public static System.Data.DataTable TableJoin(System.Data.DataTable dt, System.Data.DataTable dtDeta ...