1. 程式人生 > >51 nod 1109 01組成的N的倍數

51 nod 1109 01組成的N的倍數

int problem 時間限制 自然數 輸入 進制 關註 scan ray

1109 01組成的N的倍數技術分享 基準時間限制:1 秒 空間限制:131072 KB 分值: 40 難度:4級算法題 技術分享 收藏 技術分享 關註 給定一個自然數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<queue>
#include<cstdio>
#include
<cstring> #include<iostream> #include<algorithm> using namespace std; struct nond{ string s; int mod; }cur,net; queue<nond>que; int n; bool vis[1000001]; int main(){ scanf("%d",&n); cur.s="1";cur.mod=1; que.push(cur); while(!que.empty()){ cur
=que.front(); que.pop(); net.mod=(cur.mod*10)%n; net.s=cur.s+0; if(net.mod==0){ cout<<net.s; return 0; } if(!vis[net.mod]){ que.push(net); vis[net.mod]=1; } net.mod=(cur.mod*10
+1)%n; net.s=cur.s+1; if(net.mod==0){ cout<<net.s; return 0; } if(!vis[net.mod]){ que.push(net); vis[net.mod]=1; } } }

51 nod 1109 01組成的N的倍數