POJ 1426 Find The Multiple
[kuangbin带你飞]专题一 简单搜索 E
题目链接:http://poj.org/problem?id=1426
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
题意:
找出01构成的数字,且是n的倍数(如果存在多个可以只输出一个)
tip:
*10或者*10+1 找好边界
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std ; #define LL long long int n ; int flag = 0 ; void mult(LL num , int len) { if(flag) return; if(len>=19) { // 无符号 LL 最长是 19 位数字 LL 也是 19 位 (可表示正负数) return; } if(num%n==0) { printf("%lld\n" , num); flag = 1 ; return; } mult(num*10 , len+1) ; mult(num*10 + 1 , len +1 ) ; } int main() { while(~scanf("%d" , &n)) { if(n==0) { break ; } flag = 0 ; mult(1 , 0 ) ; } return 0 ; }