POJ 1426 Find The Multiple && 51nod 1109 01组成的N的倍数 (BFS + 同余模定理)
2015-07-27 14:38
405 查看
Find The Multiple
Description
Given a positive integer n, write a program to find out a nonzero multiple m of n whose decimal representation contains only the digits 0 and 1. You may assume that n is not greater than 200 and there is a corresponding m containing no more than 100 decimal
digits.
Input
The input file may contain multiple test cases. Each line contains a value of n (1 <= n <= 200). A line containing a zero terminates the input.
Output
For each value of n in the input print a line containing the corresponding value of m. The decimal representation of m must not contain more than 100 digits. If there are multiple solutions for a given value of n, any one of them is acceptable.
Sample Input
Sample Output
Source
题意:输入一个正整数n(1<=n<=200),然后要求找一个只包含0和1的十进制数字能整除n
51nod 1109
Time Limit: 1000MS | Memory Limit: 10000K | |||
Total Submissions: 21436 | Accepted: 8775 | Special Judge |
Given a positive integer n, write a program to find out a nonzero multiple m of n whose decimal representation contains only the digits 0 and 1. You may assume that n is not greater than 200 and there is a corresponding m containing no more than 100 decimal
digits.
Input
The input file may contain multiple test cases. Each line contains a value of n (1 <= n <= 200). A line containing a zero terminates the input.
Output
For each value of n in the input print a line containing the corresponding value of m. The decimal representation of m must not contain more than 100 digits. If there are multiple solutions for a given value of n, any one of them is acceptable.
Sample Input
2 6 19 0
Sample Output
10 100100100100100100 111111111111111111
Source
题意:输入一个正整数n(1<=n<=200),然后要求找一个只包含0和1的十进制数字能整除n
#include<iostream> #include<algorithm> #include<stdio.h> #include<string.h> #include<stdlib.h> #include<queue> using namespace std; int n; int ans; int v[5000]; struct node { int x; int y; } a[1000010]; void DFS(int k) { int pt = a[k].y; if(pt <= 0) { printf("1"); return ; } DFS(pt); printf("%d",a[pt].x); } void BFS() { ans = 1; memset(v,0,sizeof(v)); queue<node>q; struct node t,f; t.x = 1; t.y = 0; a[0].x = 1; a[0].y = 0; q.push(t); while(!q.empty()) { t = q.front(); q.pop(); for(int i=0; i<=1; i++) { f.x = t.x * 10 + i; /// 同余模定理应用 if(v[f.x] == 0) { f.x = f.x % n; f.y = ans; q.push(f); v[f.x] = 1; a[ans].x = i; a[ans].y = t.y; if(f.x == 0) { DFS(ans); printf("%d\n",i); return ; } ans++; } } } } int main() { while(scanf("%d",&n)!=EOF) { if(n == 0) { break; } BFS(); } return 0; }
51nod 1109
#include<iostream> #include<algorithm> #include<stdio.h> #include<string.h> #include<stdlib.h> #include<queue> using namespace std; int n; int ans; int v[1010000]; struct node { int x; int y; } a[1000010]; void DFS(int k) { int pt = a[k].y; if(pt <= 0) { printf("1"); return ; } DFS(pt); printf("%d",a[pt].x); } void BFS() { ans = 1; memset(v,0,sizeof(v)); queue<node>q; while(!q.empty()){ q.pop(); } struct node t,f; t.x = 1; t.y = 0; a[0].x = 1; a[0].y = 0; q.push(t); while(!q.empty()) { t = q.front(); q.pop(); for(int i=0; i<=1; i++) { f.x = t.x * 10 + i; /// 同余模定理应用 f.x = f.x % n; if(v[f.x] == 0) { f.y = ans; q.push(f); v[f.x] = 1; a[ans].x = i; a[ans].y = t.y; if(f.x == 0) { DFS(ans); printf("%d\n",i); return ; } ans++; } } } } int main() { while(scanf("%d",&n)!=EOF) { BFS(); } return 0; }
相关文章推荐
- Spark Streaming 流计算优化记录(5)-分区与内存的优化
- Java 集合类图 详解
- openfire中mysql的前期设置
- J - Assign the task - hdu 3974(DFS建树+简单线段树)
- 2.7-密码文件
- HashMap的遍历最优方式
- ThinkPHP 多语言支持的配置与使用
- 高性能HTTP加速器Varnish-3.0.3搭建、配置及优化
- cocos2d-x3.0 解释具体的新的物理引擎setCategoryBitmask()、setContactTestBitmask()、setCollisionBitmask()
- 2.6-用户名文件
- OC学习
- 浏览器加载静态文件时,是否使用浏览器已缓存的文件的相关策略。
- 二维数组的length属性和一维数组的length属性
- 5年后你想过什么样的生活?
- 自定义分享功能
- Division
- 2.5-软链接和硬链接
- 在JS中遇到===比较
- GTK入门学习:glade的介绍
- 第4周 Redis使用场景与案例分析