Yet Another Multiple Problem 同余定理 bfs
题意:
给出一个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相关推荐
- 十二届 - CSU 1803 :2016(同余定理)
题目地址:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1803 Knowledge Point: 同余定理:两个整数a.b,若它们除以整数m所 ...
- Light oj 1214-Large Division (同余定理)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1214 题意很好懂,同余定理的运用,要是A数被B数整除,那么A%B等于0.而A很大,那我 ...
- 同余定理 逆元 中国剩余定理 费马小定理
同余定理 同余定理是数论中的重要概念.给定一个正整数m,如果两个整数a和b满足(a-b)能够被m整除,即(a-b)/m得到一个整数,那么就称整数a与b对模m同余,记作a≡b(mod m). 两个整数a ...
- Codeforces数学1600----day1[同余定理,树状数组+两次二分,,组合计数]
1.C. Kuroni and Impossible Calculation **知识点:同余定理 ** #include <iostream> #include <cstdio&g ...
- CSDN 厦门大学线下编程比赛第一题:求和(同余定理)
题目意思: 给定a和n,计算a+aa+aaa+aaaa+...+a...a(n个a) 的和. 输入描写叙述:測试数据有多组,以文件结尾.每行输入a,n(1<=a,n<=1000000). ...
- 同余定理在算法求解中的应用
1. 同余定理 (a−b)modK=0⇓(amodK)=(bmodK) (a-b)\mod K=0\\ \Downarrow\\ \left(a\mod K\right) = \left(b\mod ...
- Divisible [数学]同余定理
给定一个很大的整数,我想知道它能否被9整除. 输入 有t组测试数据,每组数据给定一个整数N不存在前导0.(1 <= t <= 20,1 <= N <= 10^200). 输出 ...
- 同余定理+前缀和解题技巧
相关题目 和可被 K 整除的子数组 连续的子数组和 Delete Sublist to Make Sum Divisible By K 思路 前缀和就不单独说了,同余定理贴一个百度百科 同余定理 数论 ...
- 同余定理在计算机科学的应用,同余定理在小学数学竞赛中的应用
肖丽 [摘要]本研究基于高观点视角,例析同余定理在小学数学竞赛中的应用,探讨运用其解决小学奥数问题的优越性. [关键词]小学数学竞赛 同余定理 应用 [中图分类号]G623.5[文献标识码]A [文章 ...
最新文章
- Kubernetes 1.8.4 手动安装教程-安装Dashboard(七)
- 比特币早期投资家:没有人能够阻止其发展 TechWeb 09-27 09:10 凤凰科技讯 据CNBC网站北京时间9月27日报道,风险投资家、“Social+Capital”基金创始人Chamath
- ReactiveCocoa个人记录
- 微信小程序setTimeout自动跳转页面
- PIC32单片机harmony开发环境 - i2c例程和代码分析
- RTP在。net中的使用(资料)
- java 微信公众号js接入_SpringCloud : 接入 微信公众号平台(三)、获取JsSDK配置参数...
- 并发测试工具_性能测试工具基本工作原理及基本操作流程
- javacc解析json报错
- BUG--tomcat更改目录失败
- javascript常见的数组方法
- 43w+条手机电话号码归属地数据库免费下载·附区号邮编
- 【C++课程设计】基于单向链表的通讯录管理程序
- figtree需要在JAVA下运行吗,科学网—Inno setup 制作安装文件以编译FigTree为例 - 张金龙的博文...
- vue 子组件与父组件运行的顺序
- 信息安全管理——数据编码与密码基础
- Qt,C++多功能电子印章控件实现
- 图像描述的注意力可视化
- 7-9 彩虹瓶 (25 分)(c++)
- 杠杆炒股中洗盘是什么?
热门文章
- win7或xp下常用命令
- step3 . day3 数据结构之线性表 单项循环链表和双向循环链表
- tcpdump抓取udp报文
- Redis 常用监控信息命令总结
- bzoj 2342: 双倍回文 回文自动机
- char* 和char[] 内存分配的区别(转载)
- 窗体控件随窗体大小改变(仍有不足)
- mysqlperformanceblog
- ZOJ_3501 Roman Order
- java.lang.reflect.Method.getGenericParameterTypes()方法示例