P1988 火炬
题目描述
2008 北京奥运会,你想成为四川汶川的一名火炬手,经过层层选拔,终于到了最后一关。
这一关是一道很难的题:任意给定一个正整数 NNN,求一个最小的正整数 MMM,使得 N×MN \times MN×M 的十进制表示形式里只含有 1
和 0
。
输入格式
一行一个正整数 NNN。
输出格式
输出一行,如果有解,输出一个整数,表示最小的 MMM,否则输出 No Solution
。
输入输出样例 #1
输入 #1
12
输出 #1
925
说明/提示
1≤N≤1051\le N\le 10^51≤N≤105
C++实现
#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");
}
后续
接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容