C-POJ-1426 Find The Multiple
2017-07-24 20:23
477 查看
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
2
6
19
0
Sample Output
10
100100100100100100
111111111111111111
BFS、DFS都可以
BFS
DFS
这题很简单,没啥说的。
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
BFS、DFS都可以
BFS
#include<iostream> #include<cstring> #include<cstdio> #include<queue> using namespace std; typedef long long LL; void BFS(int n){ LL ans=1,b; queue <LL> a; a.push(ans); while(!a.empty()){ b=a.front(); a.pop(); if(b%n==0){ printf("%lld\n",b); return; } a.push(b*10); a.push(b*10+1); } return; } int main(){ int n; while(scanf("%d",&n)!=EOF){ if(n==0) break; BFS(n); } return 0; }
DFS
#include<stdio.h> #include<string.h> #include<stdbool.h> char ans[1005]; bool flag; void dfs(int mod,int k,int n){ if(k>20){ ans[k]='\0'; return; } if(mod==0){ flag=true; return; } if(!flag){ ans[k]='0'; dfs((mod*10)%n,k+1,n); } if(!flag){ ans[k]='1'; dfs((mod*10+1)%n,k+1,n); } if(!flag){ ans[k]='\0'; } } int main(){ int n; while(scanf("%d",&n)!=EOF){ if(n==0) break; ans[0]='1'; flag=false; dfs(1,1,n); printf("%s\n",ans); memset(ans,'\0',sizeof(ans)); } return 0; }
这题很简单,没啥说的。
相关文章推荐
- POJ-1426-Find The Multiple【BFS】
- POJ-1426--Find The Multiple---BFS广搜
- POJ 1426 Find The Multiple
- [kuangbin带你飞]专题1 简单搜索 E - Find The Multiple POJ - 1426
- poj 1426 Find The Multiple (BFS)
- 【DFS】poj 1426 Find The Multiple
- POJ1426_Find The Multiple_测试出真知
- POJ 1426 Find The Multiple
- D - Find The Multiple POJ - 1426 ——DFS || BFS
- POJ1426-Find The Multiple-深度优先搜索BFS
- poj 1426 Find The Multiple ( dfs )
- 【搜索】【poj 1426】Find The Multiple
- POJ 1426 Find The Multiple (搜索)
- POJ 1426 Find The Multiple
- POJ1426 Find The Multiple 解题报告
- POJ 1426 Find The Multiple
- POJ 1426 Find The Multiple
- POJ 1426-Find The Multiple(bfs)
- POJ 1426 Find The Multiple
- poj1426——Find The Multiple(BFS)