1F: Find The Multiple

题目来源

题目

给定一个正整数n,请编写一个程序来寻找n的一个非零的倍数m,这个m应当在十进制表示时每一位上只包含0或者1。你可以假定n不大于200且m不多于100位。

提示:本题采用Special Judge,你无需输出所有符合条件的m,你只需要输出任一符合条件的m即可。Input输入包含多组数据,每组数据仅一行,只包含一个正整数n (1 <= n <= 200). Output对于输入的每组n,都输出任一符合条件的m。即使有多个符合条件的m,你也只需要输出一个即可。

Sample Input
2
6
19
0
Sample Output
10
100100100100100100
111111111111111111

解法

题目最坑的一点是答案是不超过long long 的, 所以不需要用高精度
第一位选1, 然后后面每一位有0和1两种选法, 枚举所有可能的选法,若符合则输出

代码

#include <iostream>
#include <cstdio>
using namespace std;

int flag;
void dfs(int n, long long int ans) {
	if(flag) return ;
	if(ans < 0) return ;
	if(ans %n==0) {
		cout << ans << endl;
		flag = 1;
	}
	else {
		dfs(n, ans*10+1);
		dfs(n, ans*10);

	}
}

int main() {
	int n;
	cin >> n;
	while(n) {
		dfs(n, 1);
		flag = 0;
		cin >> n;
	}

	return 0;
}
发布了14 篇原创文章 · 获赞 0 · 访问量 152

猜你喜欢

转载自blog.csdn.net/loaf_/article/details/103960402
今日推荐