题意:

给出一个n和m个数

求一个最小的数 1 为n的倍数  2 没有这m个数字中的任意一个

123%n = ((((1%n)*10+2)%n)*10+3)%n

如果     a%n==b%n

那么    (a+x)%n==(b+x)%n

这样就可以剪枝了   之前取模n出现过的后来再出现就可以不要了

例如

A%n==B%n 且 A<B 那么B就不用处理了

#include<cstdio>
#include<cstring>
#include<vector>
#include<queue>
#include<algorithm>
#define LL __int64
using namespace std;const int MAXN = 11111;struct Node
{vector <int> num;int c;
} tmp;queue <Node> q;int have[MAXN];
int vis[11];int n;void bfs()
{while(!q.empty()) q.pop();memset(have,0,sizeof(have));for(int i = 1;i < 10;i++)if(!vis[i]){if(have[i%n]) continue;tmp.num.clear();tmp.num.push_back(i);tmp.c = i%n;q.push(tmp);have[i%n] = 1;}while(!q.empty()){Node cur = q.front();if(cur.c == 0) break;q.pop();for(int i = 0;i < 10;i++){if(vis[i]) continue;int tt = (cur.c*10+i)%n;if(!have[tt]){have[tt] = 1;tmp.num.clear();for(int j = 0;j < cur.num.size();j++)tmp.num.push_back(cur.num[j]);tmp.num.push_back(i);tmp.c = tt;q.push(tmp);}}}if(!q.empty()){for(int i = 0;i < q.front().num.size();i++)printf("%d",q.front().num[i]);puts("");}else puts("-1");
}int main()
{int m;int cas = 0;while(~scanf("%d%d",&n,&m)){memset(vis,0,sizeof(vis));for(int i = 0;i < m;i++){int a;scanf("%d",&a);vis[a] = 1;}printf("Case %d: ",++cas);bfs();}return 0;
}

View Code

转载于:https://www.cnblogs.com/bxd123/p/10994241.html

Yet Another Multiple Problem 同余定理 bfs相关推荐

  1. 十二届 - CSU 1803 :2016(同余定理)

    题目地址:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1803 Knowledge Point: 同余定理:两个整数a.b,若它们除以整数m所 ...

  2. Light oj 1214-Large Division (同余定理)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1214 题意很好懂,同余定理的运用,要是A数被B数整除,那么A%B等于0.而A很大,那我 ...

  3. 同余定理 逆元 中国剩余定理 费马小定理

    同余定理 同余定理是数论中的重要概念.给定一个正整数m,如果两个整数a和b满足(a-b)能够被m整除,即(a-b)/m得到一个整数,那么就称整数a与b对模m同余,记作a≡b(mod m). 两个整数a ...

  4. Codeforces数学1600----day1[同余定理,树状数组+两次二分,,组合计数]

    1.C. Kuroni and Impossible Calculation **知识点:同余定理 ** #include <iostream> #include <cstdio&g ...

  5. CSDN 厦门大学线下编程比赛第一题:求和(同余定理)

    题目意思: 给定a和n,计算a+aa+aaa+aaaa+...+a...a(n个a) 的和. 输入描写叙述:測试数据有多组,以文件结尾.每行输入a,n(1<=a,n<=1000000). ...

  6. 同余定理在算法求解中的应用

    1. 同余定理 (a−b)modK=0⇓(amodK)=(bmodK) (a-b)\mod K=0\\ \Downarrow\\ \left(a\mod K\right) = \left(b\mod ...

  7. Divisible [数学]同余定理

    给定一个很大的整数,我想知道它能否被9整除. 输入 有t组测试数据,每组数据给定一个整数N不存在前导0.(1 <= t <= 20,1 <= N <= 10^200). 输出 ...

  8. 同余定理+前缀和解题技巧

    相关题目 和可被 K 整除的子数组 连续的子数组和 Delete Sublist to Make Sum Divisible By K 思路 前缀和就不单独说了,同余定理贴一个百度百科 同余定理 数论 ...

  9. 同余定理在计算机科学的应用,同余定理在小学数学竞赛中的应用

    肖丽 [摘要]本研究基于高观点视角,例析同余定理在小学数学竞赛中的应用,探讨运用其解决小学奥数问题的优越性. [关键词]小学数学竞赛 同余定理 应用 [中图分类号]G623.5[文献标识码]A [文章 ...

最新文章

  1. Kubernetes 1.8.4 手动安装教程-安装Dashboard(七)
  2. 比特币早期投资家:没有人能够阻止其发展 TechWeb 09-27 09:10 凤凰科技讯 据CNBC网站北京时间9月27日报道,风险投资家、“Social+Capital”基金创始人Chamath
  3. ReactiveCocoa个人记录
  4. 微信小程序setTimeout自动跳转页面
  5. PIC32单片机harmony开发环境 - i2c例程和代码分析
  6. RTP在。net中的使用(资料)
  7. java 微信公众号js接入_SpringCloud : 接入 微信公众号平台(三)、获取JsSDK配置参数...
  8. 并发测试工具_性能测试工具基本工作原理及基本操作流程
  9. javacc解析json报错
  10. BUG--tomcat更改目录失败
  11. javascript常见的数组方法
  12. 43w+条手机电话号码归属地数据库免费下载·附区号邮编
  13. 【C++课程设计】基于单向链表的通讯录管理程序
  14. figtree需要在JAVA下运行吗,科学网—Inno setup 制作安装文件以编译FigTree为例 - 张金龙的博文...
  15. vue 子组件与父组件运行的顺序
  16. 信息安全管理——数据编码与密码基础
  17. Qt,C++多功能电子印章控件实现
  18. 图像描述的注意力可视化
  19. 7-9 彩虹瓶 (25 分)(c++)
  20. 杠杆炒股中洗盘是什么?

热门文章

  1. win7或xp下常用命令
  2. step3 . day3 数据结构之线性表 单项循环链表和双向循环链表
  3. tcpdump抓取udp报文
  4. Redis 常用监控信息命令总结
  5. bzoj 2342: 双倍回文 回文自动机
  6. char* 和char[] 内存分配的区别(转载)
  7. 窗体控件随窗体大小改变(仍有不足)
  8. mysqlperformanceblog
  9. ZOJ_3501 Roman Order
  10. java.lang.reflect.Method.getGenericParameterTypes()方法示例