题解 P1988 【火炬】
Manjusaka丶梦寒 · · 题解
既然大家都已经说过了,这题是个爆搜,那为啥要把代码写这么长啊。 没搞懂各位大佬们搜的啥? 直接把 0和1 组成的数搜出来不就好了。 要想判断是不是最优解的话,先搜0,再搜1,实在不放心排一下序。 我的代码,应该不叫简单可读吧。
/*.........................
作者:Manjusaka
时间:2018/7/11
题目:P1988 火炬
..........................*/
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
using namespace std;
long long n,tot,a[1000000];
void dfs(long long x)
{
a[++tot]=x;
if(x>9e17)return;
for(int i=0;i<=1;i++)
dfs(x*10+i);
}
int main()
{
scanf("%lld",&n);
dfs(1);
sort(a+1,a+1+tot);
for(int i=1;i<=tot;i++)
{
if(a[i]%n==0)
{
cout<<a[i]/n;
return 0;
}
}
printf("No Solution");
}