一个算法题目,大家看看,提供点思路

f_acme 2006-01-08 10:53:31
给定一个整数n(0<n<=200),找出一个n的最小的倍数K,使得K只由0和1两个数字组成。
比如输入2,输出10。
输入3,输出111。
输入6,输出100100100100100100。
输入19,输出111111111111111111。
并且已知结果K不会超过100位数字。

哪位提供点思路?
...全文
257 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzjall 2006-02-28
  • 打赏
  • 举报
回复
每扩展出一位,只需记录一个余数(余数以前出现过就不再向下扩展),
-------------------------------------------
余数以前出现过就不再向下扩展?
没想明白?可以详细解释以下吗?
谢谢!
wyl1267 2006-02-21
  • 打赏
  • 举报
回复
嗯,这个解法很聪明!关键在于记录余数,是你自己想出来的?
不过要处理大到100位的数字,恐怕一般计算机是难以实现的。
gpuboy 2006-02-20
  • 打赏
  • 举报
回复
to mmmcd(超超):

Your solution is correct. Previously, I misunderstood what you said.
f_acme 2006-02-19
  • 打赏
  • 举报
回复
还是要自己顶啊
mmmcd 2006-02-19
  • 打赏
  • 举报
回复
zju1530

#include <iostream.h>
#include <memory.h>

struct node{
int a,b;
int pre;
}queue[200];

char used[200];

void output(int k){
if(queue[k].pre>=0){
output(queue[k].pre);
}
cout<<queue[k].a;
}

int main()
{
int n,r,i,j,L;
queue[0].a=1;
queue[0].b=1;
queue[0].pre=-1;
while(cin>>n && n){
memset(used,0,sizeof(used));
used[1]=1;
L=r=1;
if(n>1)
for(i=0;i<L;i++){
for(j=0;j<2;j++){
r=(queue[i].b*10+j)%n;
if(!used[r]){
queue[L].a=j;
queue[L].b=r;
queue[L].pre=i;
used[r]=1;
L++;
}
if(r==0)
break;
}
if(r==0)
break;
}
output(L-1);
cout<<endl;
}
return 0;
}
mmmcd 2006-02-19
  • 打赏
  • 举报
回复
0<n<=200
余数最多不会超过200个,
搜索树节点个数上限200(注意使用广度优先)
f_acme 2006-02-19
  • 打赏
  • 举报
回复
是否与二进制有点联系?
gpuboy 2006-02-19
  • 打赏
  • 举报
回复
可以用宽度优先搜索
位数1 1
位数2 10 11
位数3 100 101 110 111
...

每扩展出一位,只需记录一个余数(余数以前出现过就不再向下扩展),
当余数为零,结果就找到了.
==================

This approach is infeasible! It is an NP-Complete Problem. You must look for another algorithm.
mmmcd 2006-02-19
  • 打赏
  • 举报
回复
可以用宽度优先搜索
位数1 1
位数2 10 11
位数3 100 101 110 111
...

每扩展出一位,只需记录一个余数(余数以前出现过就不再向下扩展),
当余数为零,结果就找到了.
gpuboy 2006-02-19
  • 打赏
  • 举报
回复
Easy work.

This problem is not worth tackling. Think more of something more meaningful.
f_acme 2006-01-15
  • 打赏
  • 举报
回复
为什么没人啊
f_acme 2006-01-12
  • 打赏
  • 举报
回复
怎么沉了?

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧