问题 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 | 正确 | 1712 |
876 |
C++/Edit | 379 B | 2018-08-07 00:48:46 | admin | ||
786915 | *正确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);
}
}