| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 924 人关注过本帖
标题:求助 自己实在是不会了
只看楼主 加入收藏
liuqingwen
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-5-14
收藏
 问题点数:0 回复次数:15 
求助 自己实在是不会了
一个竞赛的题目弄了很久也不对 请大虾们指点


试题
按递增顺序产生序列M中最小的 n 个数(自然数n由键盘输入)。
序列M的定义如下:
1)数1属于M;
2)如果k属于M,则2k+1,3k+1也属于M;
3)除1)、2)之外,再无数属于M。


请大虾们给出能运行的C语言程序,别的语言的看不懂,不胜感激!
搜索更多相关主题的帖子: 不胜感激 自然数 C语言 键盘 
2007-05-14 18:45
taojingwen
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2007-5-5
收藏
得分:0 
#include<stdio.h>
main()
{int a[60],k,n,i;
scanf("%d",&n);
a[0]=1;
for(k=1;k<=n;k++)
{{i=1;
a[i]=(2*k+1);
i=+2;}
while((i=+2)<n)
i=2;
a[i]=(3*k+1);
i=+2;
}
for(i=0;i<=n;i++)
printf("The small is:%d\n",a[i]);
}
看看,不知道行不行?

I Believe I Can Fly
2007-05-14 22:22
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

比较由2*k+1生成的序列和3*k+1生成的序列值.并且保存当前的两个K值.以两者小者保存,同时使她的计数器加1.


倚天照海花无数,流水高山心自知。
2007-05-14 22:34
taojingwen
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2007-5-5
收藏
得分:0 
有点错误,正在查找ING……
有能人之士也帮忙分析一下,为什么在按了Ctrl+F9,输入数字之后,却一直停留在该界面,看不到结果呢?

I Believe I Can Fly
2007-05-14 22:34
YOGIOH
Rank: 1
等 级:新手上路
帖 子:102
专家分:0
注 册:2007-5-8
收藏
得分:0 

请问谁能解释一下题目

不理解M 和N的意思


2007-05-14 22:40
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

还是没这么简单,这里由2的族生成的数可以作为3族的基数.
而以3为基数生成的数可以不用考虑会被以2的基数扩展.以为2的族数里已经包含里所有的奇数.
再想想.

倚天照海花无数,流水高山心自知。
2007-05-14 22:42
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

看来还是我复杂化了.我推了几下,发现只要由2,3的族组成的数已经包含了所有的数.
2:1 3 5 7 9 11 13 15 17 19 21(加2)
3:1 4 7 10 13 16 19 22(加3)
下面是2的族数以3为基数生成的数
4 10 16 22 28(全是加6(2*3),可以归结到3族)
3的族数以2为基数生成的数必定是属于2的族数的.不管怎么变它经过2*K+1,它还是个奇数.


综上.3楼的方法可以实现.


倚天照海花无数,流水高山心自知。
2007-05-14 22:52
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

#include<stdio.h>

int main()
{
long data[1000];
int n,i,j=1,k=1;
scanf("%d",&n);
data[0]=1;
for(i=1;i<n;i++)
{
if(2*j+1<3*k+1)
{
data[i]=2*j+1;
j++;
}
else
{
if(2*j+1>3*k+1)
{
data[i]=3*k+1;
k++;
}
else //处理相等,这一步很重要。
{
data[i]=3*k+1;
k++;
j++;
}
}
}
for(int i=0;i<n;i++)
{
printf("%-5ld",data[i]);
}
printf("\n");
return 0;
}


//不知道可以吗.


倚天照海花无数,流水高山心自知。
2007-05-14 23:03
ml342418175
Rank: 1
等 级:新手上路
威 望:1
帖 子:183
专家分:0
注 册:2007-4-13
收藏
得分:0 
以下是引用nuciewth在2007-5-14 23:03:54的发言:

#include<stdio.h>

int main()
{
long data[1000];
int n,i,j=1,k=1;
scanf("%d",&n);
data[0]=1;
for(i=1;i<n;i++)
{
if(2*j+1<3*k+1)
{
data[i]=2*j+1;
j++;
}
else
{
if(2*j+1>3*k+1)
{
data[i]=3*k+1;
k++;
}
else //处理相等,这一步很重要。
{
data[i]=3*k+1;
k++;
j++;
}
}
}
for(int i=0;i<n;i++)/*这里的int 我没用,编译才通过*/
{
printf("%-5ld",data[i]);
}
printf("\n");
return 0;
}


这个题目什么意思不是很清楚,讲清楚点好吗?

做人要洒脱一点,潇洒一点!
2007-05-15 13:13
liuqingwen
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-5-14
收藏
得分:0 
回复:(taojingwen)#includemain(){...
我调试过了,情况和你的一样。
我觉得你的程序想法很好啊,我做的时候也是用数组存储的M,但我老是觉得M是无限的,也不知道用什么形式存好了,还有我觉得你的这个程序好象没有排序,k的值不是你想的那样吧。也许是我错了,还是不胜感激!!
2007-05-15 17:51
快速回复:求助 自己实在是不会了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021269 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved