printf不能直接输出string类型
因为string不是c语言的内置数据,所以直接printf输出string类型的是办不到的。
要这样输出:
printf("%s\n",a.c_str());
给定一个自然数N,找出一个M,使得M > 0且M是N的倍数,并且M的10进制表示只包含0或1。求最小的M。
例如:N = 4,M = 100。
Input
输入1个数N。(1 <= N <= 10^6)
Output
输出符合条件的最小的M。
Input示例
4
Output示例
100
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<string>
using namespace std;
struct node
{
string a;//答案
int num;//a对n的 mod
}ans,now;
queue<node > q;
bool v[1100000];
int main()
{
int n;
scanf("%d",&n);
if(n==1)
{
printf("1\n");
return 0;
}
memset(v,true,sizeof(v));
while(q.size()!=0) q.pop();
ans.a='1';
ans.num=1%n;
q.push(ans);
while(q.size()!=0)
{
ans=q.front();
q.pop();
if(ans.num==0)
{
printf("%s",ans.a.c_str());
break;
}
now.a=ans.a+'0';
now.num=(ans.num*10+0)%n;
if(v[now.num]==true)
{
q.push(now);
v[now.num]=false;
}
now.a=ans.a+'1';
now.num=(ans.num*10+1)%n;
if(v[now.num]==true)
{
q.push(now);
v[now.num]=false;
}
}
return 0;
}