1109 01组成的N的倍数
2016-09-05 22:50
267 查看
1109 01组成的N的倍数
基准时间限制:1 秒 空间限制:131072 KB
给定一个自然数N,找出一个M,使得M > 0且M是N的倍数,并且M的10进制表示只包含0或1。求最小的M。
例如:N = 4,M = 100。
Input
Output
Input示例
Output示例
基准时间限制:1 秒 空间限制:131072 KB
给定一个自然数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 和http://www.cnblogs.com/zzuli2sjy/p/5731745.html一样;
#include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <iostream> #include <algorithm> #include <map> #include <queue> #include <vector> #include<set> using namespace std; typedef long long LL; bool flag[6000000]; int ans[20]; set<int>que; set<int>::iterator it; typedef struct pp { int mod; int id; int pre; int digit; pp() { pre=-1; } } ss; ss bns[1000000]; int ask[1000000]; int cp[2000000]; int bfs(int n,int m); int main(void) { int i,j,k; while(scanf("%d",&k)!=EOF) { int n; int m; que.clear(); cp[0] = 0;cp [1] = 1; n = 2; ans[0]=cp[0]; int uu=cp[0]; int t=1; for(i=1;i<n;i++) { if(cp[i]!=uu) { ans[t++]=cp[i]; uu=cp[i]; } } if(k==0)printf("0\n"); else { int sum=0; int id=bfs(t,k); if(id==-1) { printf("0\n"); } else { while(id!=-1) { ask[sum++]=bns[id].digit; id=bns[id].pre; } for(i=sum-1; i>=0; i--) { printf("%d",ask[i]); } printf("\n"); } } } return 0; } int bfs(int n,int m) { int i,j,k; int kk=0; memset(flag,0,sizeof(flag)); queue<ss>stc; for(i=0; i<n; i++) { int mod=ans[i]%m; if(!flag[mod]&&ans[i]!=0) { flag[mod]=true; bns[kk].id=kk; bns[kk].mod=mod; bns[kk].pre=-1; bns[kk].digit=ans[i]; stc.push(bns[kk]); kk++; } } while(!stc.empty()) { ss tt=stc.front(); stc.pop(); for(i=0; i<n; i++) { int mod=(tt.mod*10+ans[i])%m; if(!flag[mod]) { bns[kk].id=kk; bns[kk].pre=tt.id; bns[kk].mod=mod; bns[kk].digit=ans[i]; if(mod==0) { return kk; } stc.push(bns[kk]); kk++; flag[mod]=true; } } } return -1; }
相关文章推荐
- 51nod 1109 01组成的N的倍数
- 51nod 1109 01组成的N的倍数
- 51nod 1109 01组成的N的倍数(bfs)
- POJ 1426 Find The Multiple && 51nod 1109 01组成的N的倍数 (BFS + 同余模定理)
- 51nod-1109 01组成的N的倍数(宽搜)
- 【51Nod 1109】01组成的N的倍数
- 51 nod 1109 01组成的N的倍数
- ACM_51nod_1109_01组成的N的倍数
- 51Nod——T 1109 01组成的N的倍数
- 1109 01组成的N的倍数
- 51nod 1109 01组成的N的倍数 【dfs+剪枝+vector】
- 51nod 1109 01组成的N的倍数
- 51nod 1109 01组成的N的倍数 (bfs)
- 51Nod 1109 01组成的N的倍数
- 51Nod-1109-01组成的N的倍数
- 51nod 1109 —— 01组成的N的倍数
- 51nod 1109 01组成的N的倍数
- 51nod 1109 —— 01组成的N的倍数
- 51Nod-1109-01组成的N的倍数
- 51nod 1109 01组成的N的倍数+