求最小值

问题 H: 求最小值(强数据版本)

时间限制: 10 Sec  内存限制: 128 MB
提交: 236  解决: 56
[提交][状态][讨论版]

题目描述

给定一个小于99的正整数n, 编写函数找一个最小的m, 使得m为n的倍数, 且m的各个位数仅由1和0组成.
例如输入:
5
20
98
则输出:
10
100
11000010

输入

测试数据有多组。

每行输入一个正整数 n (0 < n < 99)。

输出

与输入相对应,每行输出一个表示结果的整数m。

样例输入

5
20
98

样例输出

10
100
11000010
运行编号 用户 问题 结果 内存 耗时 语言 代码长度 提交时间
824528 1705030118

H

正确

1712

876

C++/Edit 379 B 2018-08-07 00:48:46 admin
786915 1705030118

H

*正确726144

1696

0

C++/Edit 880 B 2018-02-28 12:26:58 admin

打表虽然能过,但是那不是自己想要的……其实就是个简单的DFS,为什么当初做不出来呢???

#include<bits/stdc++.h>
using namespace std;
int n;
long long ans;
void dfs(long long a,int h)
{
    if(h>=18) return;
    if(a%n==0&&a<ans) ans=a;
    dfs(a*10,h+1);
    dfs(a*10+1,h+1);
}
int main()
{
    while(scanf("%d",&n)==1)
    {
        ans=1e18+9;
        dfs(1,0);
        printf("%lld\n",ans);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_41061455/article/details/81464162