zoj 1136 Multiple
来源:互联网 发布:成本核算软件sap 编辑:程序博客网 时间:2024/06/06 01:26
这题由于最后结果可能会比较大,不能直接用int 存储,有一个小小的数学知识:
若 (x*10+c)%n==0, 则 ((x%n)*10+c)==0, 这个证明的话把x写成 a*n+b在纸上算一算就出来了
#include <stdio.h>#include <cmath>#include <algorithm>#include <cstring>#include <vector> #include <functional>#include <queue>using namespace std;vector<int> num, re;typedef struct{int x, va, head;}que;que q[5001];bool cmp(int a, int b){return a<b;}int main(){int n, m, t, i, j, x, b[5001];while(scanf("%d%d", &n, &m)!=EOF){num.clear();memset(b, 0, sizeof(b));re.clear();for(i=0; i<m; i++){scanf("%d", &t);num.push_back(t);}if(n==0){printf("0\n");continue;}sort(num.begin(), num.end(), cmp);int head=0, end=0;q[0].x=0; q[0].va=0; q[0].head=0;while(head<=end){for(i=0; i<m; i++){if(head==0&&num[i]==0) continue;x=(q[head].x*10+num[i])%n;if(!b[x]){end++;q[end].x=x;q[end].head=head;q[end].va=num[i];b[x]=1;if(x==0){while(end!=0){re.push_back(q[end].va);end=q[end].head;}for(j=re.size()-1; j>=0; j--)printf("%d", re[j]);printf("\n");goto hhh;}}}head++;}printf("0\n");hhh:;}return 0;}
0 0
- ZOJ 1136 Multiple(BFS)
- zoj 1136 Multiple
- zoj 1136 Multiple
- zoj 1136 Multiple
- zoj 1136 Multiple
- ZOJ 1136 Multiple
- zju/zoj 1136 Multiple(BFS)
- zoj 1136 Multiple(bfs+数论+string)
- zoj 1136 Multiple(数学+bfs)
- ZOJ 1136 Multiple( 搜索 BFS )
- ZOJ - 1136 Multiple (同余+BFS)
- ZOJ 1136 Multiple(分支界限算法)
- POJ 1465/ ZOJ 1136 : Multiple - BFS,余数判重
- 广度优先搜索,分支限界- ZOJ - 1136 Multiple
- zoj 1797 Least Common Multiple
- ZOJ 1797 Least Common Multiple
- ZOJ 1797 Least Common Multiple
- zoj 1530 Find The Multiple
- 分析器错误消息: 未能加载类型“ImageAdapter.idk.test”。
- eclispe 导入android或者java项目出现中文乱码
- struts2,json,ajax整合内容记录(改)
- 到了一定程度,就是如何书写需求的时候
- 关于C初始化内存
- zoj 1136 Multiple
- Http服务器下载文件
- linux 命令系列之 硬盘分区自动挂载(38)
- poj 2151 Check the difficulty of problems(概率dp)
- SQL 基础--> ROLLUP与CUBE运算符实现数据汇总
- [C++] Mediator Pattern 实作
- linux 命令系列之 分配swap分区(39)
- 异构系统间交互方式
- TCP协议中的三次握手和四次挥手(图解)