求解一个题。。

zhaizhaoxuan 2012-10-16 08:35:34
Sramoc问题

描述

Sramoc ( K , M ) 表示用数字0、1、2…、K-1组成的自然数中能被M整除的最小数。给定 K、M,求Sramoc ( K,M )。例如 K=2,M=7的时候,Sramoc( 2 , 7 ) = 1001。

输入

第一行为两个整数K、M满足2<=K<=10、1<=M<=1000。

输出

输出Sramoc(K,M)。

样例输入

2 7

样例输出

1001


#include <stdio.h>

int Sramoc(int k,int m){
int l,rlt;
int r[6]={0,0,0,0,0,0};
while(1){
for(l=0;l<6;l++){
if(++r[l]<k) break;
r[l]=0;
}
rlt=r[0]+r[1]*1e1+r[2]*1e2+r[3]*1e3+r[4]*1e4+r[5]*1e5;
if(rlt%m==0) return rlt;
}
return -1;
}
void main(){
int k,m;
scanf("%d %d",&k,&m);
printf("%d",Sramoc(k,m));
}


总是结果错误。。大神们帮忙解决一下啊
...全文
193 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaizhaoxuan 2012-10-20
  • 打赏
  • 举报
回复
好吧。。虽然我希望得到的是C的答案
幽y 2012-10-17
  • 打赏
  • 举报
回复
嗯,2楼正解。代码如下:

因为不确定位数,所以最好用广搜。另外,为了避免诸如超空间、超时之类的问题,有如下处理方法:

1:队列维护三个值,最后一位的数字,当前的余数,还有就是其前趋。

2:开一个哈希表:hash[i][j]表示尾数为i,余数为j是否出现过。

这样就能极大地减小枚举量。因为这样做的话,如果尾数一样余数也一样,就等于做了无用功,重复入队了。这样就能极大地减少无效状态。

一旦出现第一个余数为0的,就直接输出,结束。

Code:

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
using namespace std;



int k,m;
struct point
{
int x,mod,f;
}q[5000000];
bool hash[10][1000];

void dfs(int x)
{
if (x==-1) return;
dfs(q[x].f);
printf("%d",q[x].x);
}



int main()
{
freopen("sramoc.in","r",stdin);
freopen("sramoc.out","w",stdout);
scanf("%d%d",&k,&m);

int l=0,r=0;
for (int i=1; i<k; i++)
{
q[r].x=i; q[r].f=-1; q[r++].mod=(i % m);
hash[i][(i % m)]=1;
if (!(i % m))
{
printf("%d\n",i);
fclose(stdin);
fclose(stdout);
exit(0);
}
}

while (l<r)
{
point tmp=q[l++];
for (int i=0; i<k; i++)
{
point now=tmp;
now.x=i; now.f=l-1; now.mod=(tmp.mod*10+i)%m;
if (!hash[now.x][now.mod])
{
q[r++]=now;
hash[now.x][now.mod]=1;
}

if (!now.mod)
{
dfs(r-1);
printf("\n");
fclose(stdin);
fclose(stdout);
exit(0);
}
}
}
return 0;
}


Thank you in advance for giving me credits。
记得要记得 2012-10-16
  • 打赏
  • 举报
回复
你想得太简单了,这个要用到dfs和哈希表!
看这里吧
http://blog.sina.com.cn/s/blog_9aa2786a0101b88z.html
zhaizhaoxuan 2012-10-16
  • 打赏
  • 举报
回复
每次提交都提示Wrong Answer in Test 3

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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