社区
C语言
帖子详情
【求助】编写一个程序,按递增顺序生成集合M(数1属于M,如果x属于M,则y=2x+1和z=3x+1也属于M)的最小的100个数
cupid198436
2005-03-30 12:39:57
编写一个程序,按递增顺序生成集合M的最小的100个数,M的定义如下:
(1)数1属于M
(2)如果x属于M,则y=2x+1和z=3x+1也属于M
(3)再没有别的数属于M
...全文
1045
13
打赏
收藏
【求助】编写一个程序,按递增顺序生成集合M(数1属于M,如果x属于M,则y=2x+1和z=3x+1也属于M)的最小的100个数
编写一个程序,按递增顺序生成集合M的最小的100个数,M的定义如下: (1)数1属于M (2)如果x属于M,则y=2x+1和z=3x+1也属于M (3)再没有别的数属于M
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cupid198436
2005-03-30
打赏
举报
回复
xxxdg(学习中) said;
听起来这个题目so easy
================================================================================
是有些简单,但是我觉得这个程序给我一些新的东西,而不像其他有些程序,只是重复
xxxdg
2005-03-30
打赏
举报
回复
听起来这个题目so easy
sanyou98
2005-03-30
打赏
举报
回复
up
zengwujun
2005-03-30
打赏
举报
回复
看错人了,healer_kx那个是模板
zengwujun
2005-03-30
打赏
举报
回复
楼主改的很好,呵呵
zengwujun
2005-03-30
打赏
举报
回复
他那个算法是错的,结果差远了
cupid198436
2005-03-30
打赏
举报
回复
healer_kx(天降甘草)
呵呵,你是用C++写的,我还看不懂啊~~~
cupid198436
2005-03-30
打赏
举报
回复
kedengfeng(五德漫)
你的代码我没有看懂,能具体说一下吗?
cupid198436
2005-03-30
打赏
举报
回复
2
zengwujun(月之海)
你的思路不错,多谢了
============================================
我改了一下,具体代码如下:
#include<stdio.h>
void main()
{ int j,M[100],yi=0,zi=0,n,y=3,z=4;
M[0]=1;
for(j=1;j<100;j++){
if(y<z){
M[j]=y;
y=2*M[++yi]+1;
}
else if(y==z){
M[j]=y;
y=2*M[++yi]+1;
z=3*M[++zi]+1;
}
else{
M[j]=z;
z=3*M[++zi]+1;
}
}
printf("集合M按递增顺序的前100个元素如下:");
for(j=0;j<100;j++){
if(j%10==0)
printf("\n");
printf("%5d",M[j]);
}
printf("\n");
}
sharper_eel
2005-03-30
打赏
举报
回复
没看明白,好象不能实现吧,因为如果M集合中第一百个数是X,那么y=2x+1和z=3x+1已经超出M集合的范围了。我没看明白你的意思。
zengwujun
2005-03-30
打赏
举报
回复
#include <stdio.h>
#define N 100
void main()
{
int left[N],right[N],data[N];//left存2x+1,right存3x+1
int dLen=0;//data长度
int lLen=0,rLen=0;//left和right长度
int lbegin=0,rbegin=0;//参与比较大小的letf,right索引
int x=1;//用来产生2x+1和3x+1的数
data[dLen++]=x;//1进
while(dLen<100)
{
//产生2x+1和3x+1
left[lLen++]=2*x+1;
right[rLen++]=3*x+1;
//比较索引,产生x
if(left[lbegin]<=right[rbegin])
{
if(left[lbegin]==right[rbegin])rbegin++;
x=left[lbegin];
lbegin++;
}
else
{
x=right[rbegin];
rbegin++;
}
data[dLen++]=x;
}
for(int i=0;i<dLen;++i)
{
printf("%5d",data[i]);
if(i%5==4)printf("\n");
}
}
healer_kx
2005-03-30
打赏
举报
回复
template<int i>
class M
{
enum {s = M<i-1>::s , s1 = 2 * s + 1, s2 = 3 * s + 1}
};
template<>
class M<1>
{
enum {s = 1; s1 = 3, s2 = 4}
}
也不知道我学得泛型这么写对不对...
kedengfeng
2005-03-30
打赏
举报
回复
int c[100];
c[0] = 1;
index = 0;
count = 1;
while(index<100)
{
int n,p;
p=count-1; if(p>99) p = 99;
n = c[index]*2+1; while(c[p]>n) c[p+1]=c[p--];c[p] = n;
p=count; if(p>99) p = 99;
n = c[index]*3+1; while(c[p]>n) c[p+1]=c[p--]; c[p] = n;
count = count+2;
index ++ ;
}
团体
程序
设计天梯赛-练习集 L1
目录 L1-001 Hello World L1-002打印沙漏 L1-003个位
数
统计 L1-004计算摄氏温度 L1-005考试座位号 L1-006 连续因子【枚举】 L1-007念
数
字 L1-008求整
数
段和 L1-009N
个
数
求和 L1-010 比较大小 L1-011A-B L1-012计算指
数
L1-013计算阶乘和 L1-...
C语言面试题汇编
1.局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函
数
内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同
一个
函
数
内可以定义多个同名的局部变量,比如在两个循环体内都定义
一个
同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2.如何引用
一个
已经定义过的全局变量?
python 团体
程序
设计天梯赛L1合集(持续更新)
试题集传送门 试题列表L1-005 考试座位号L1-007 念
数
字L1-008 求整
数
段和L1-010 比较大小 L1-005 考试座位号 每个 PAT 考生在参加考试时都会被分配两个座位号,
一个
是试机座位,
一个
是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码
求助
于你,从后台查出他们的考试座位号码。 输入格式: 输入第一行给出
一个
正整
数
N(≤
100
0),
《Python
程序
设计与算法基础教程(第二版)》江红 余青松 全部章节的课后习题,上机实践,课后答案,案例研究
1. 这本书对Python的知识点的描述很详细,而且排版看的很舒服. 2. 几个例题:假装自己从零开始学,将一些有代表性、有意思的例题抽取出来. 3. 还有自己对一部分课后复习题,全部课后上机实践题的解题思路
rust-lang-study
语法和语义 变量绑定 变量绑定默认是不可变的 let可以使用模式 let (x, y) = (1, 2); 类型推断 let x: i32 = 5; 变量使用之前必须初始化 变量作用域仅在
一个
被{}包围的语句块中 变量可以被隐藏。这意味着
一个
后声明的并位于同一作用域的相同名字的变量绑定将会覆盖前
一个
变量绑定 函
数
函
数
参
数
需要声明类型 Rust 函
数
只能返回
一个
值,并且你需要在
一个
“箭头”后面声明类型,它是
一个
破折号(-)后跟
一个
大于号(>) 表达式结尾不加分..
C语言
69,374
社区成员
243,079
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章