简单搜索 Find The Multiple

 

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

 

题目要求找出一个由0和1组成的数,且这个数是n的倍数。

 

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>

using namespace std;
bool vis;
int n;
void dfs(unsigned long long x,int n,int k)
{
	if(vis) return;
	if(x%n==0){
		cout << x << endl;
		vis=true;
		return;
	}
	if(k==19) return;
	dfs(x*10,n,k+1);
	dfs(x*10+1,n,k+1);
}
int main()
{
	while(scanf("%d",&n)){
		if(n==0) break;
		vis=false;
		dfs(1,n,0);
	}
	return 0;
}

 

用dfs深搜,直到满足:x为n的倍数。

 

(注意x会很大,所以要用大的数据类型)

 

在C语言中,查找字符串中的某个单词通常涉及到以下几个步骤: 1. **初始化**:首先,你需要有一个包含你要搜索的单词的字符串和一个目标字符串(源字符串),以及它们的指针。 2. **遍历源字符串**:使用`for`循环遍历源字符串的每个字符,同时保持对单词起始位置的跟踪。 3. **匹配单词**:在每次循环中,检查当前字符是否和目标单词的首个字符匹配。如果匹配,继续比较后续字符直到找到单词结束或者不匹配为止。 4. **边界条件**:需要注意的是,在遇到空格、换行符或其他非字母字符时,可能表示单词结束,这时需要停止查找,并将当前位置作为上一个单词的结束索引。 5. **查找结果**:如果整个源字符串都被遍历完还没有找到目标单词,那么它就不在这个字符串中;反之,返回最后一个找到单词的位置。 下面是一个简单的示例函数,使用了`strchr()`函数来查找单个字符,然后手动遍历查找单词: ```c #include <stdio.h> #include <string.h> int find_word(char* str, const char* word) { int start = 0; while ((start = strstr(str + start, word)) != NULL) { // 如果找到了单词,打印位置并更新起始位置 printf("Found '%s' at index %lu\n", word, (unsigned long)(start - str)); start += strlen(word); // 移动到下一个单词的开始位置 } return start == NULL; // 返回是否找到完整单词的布尔值 } int main() { char source[] = "This is a sample string with multiple occurrences of the word 'sample'."; char target[] = "sample"; if (find_word(source, target)) printf("Word not found.\n"); else printf("Finished searching.\n"); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值