
pascal编程题
请教一题:按递增顺序产生序列M中最小的80个数。M定义如下:数1属于M;若x属于M,则y=2x+1,z=3x+1也属于M,并求:(★★★★)(1)该序列第50个元素之值;...
请教一题:
按递增顺序产生序列M中最小的80个数。M定义如下:数1属于M;若x属于M,则y=2x+1,z=3x+1也属于M,并求: (★★★★)
(1) 该序列第50个元素之值;(2)该序列前50个元素之和。
(答案:(1)172; (2)3853)
这个答案对吗?
我做的50个元素是163,(并且是不考虑重复数字的情况) 展开
按递增顺序产生序列M中最小的80个数。M定义如下:数1属于M;若x属于M,则y=2x+1,z=3x+1也属于M,并求: (★★★★)
(1) 该序列第50个元素之值;(2)该序列前50个元素之和。
(答案:(1)172; (2)3853)
这个答案对吗?
我做的50个元素是163,(并且是不考虑重复数字的情况) 展开
1个回答
展开全部
program e;
var
i,j,k,t,p,n:longint;
a:array[1..100] of longint;
begin
writeln;
p:=1; a[p]:=1; n:=1;
while p<50 do
begin
a[n+1]:=2*a[p]+1;
a[n+2]:=3*a[p]+1;
n:=n+2;
for i:=1 to n-1 do
for j:=1 to n-i do
if a[j]>a[j+1] then
begin t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t; end;
p:=p+1;
end;
writeln(a[p]:8);
end.
答案对的
追问
以前看过一样的,是错误的!没有考虑重复数!运行结果就是163!
追答
不好意思看错题啦,做下来是163,代码如下(为快速得出答案,用的vb.net)
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
ListBox1.Items.Clear()
Dim i As Integer = 0
Dim j As Integer = 1
Dim ss As Collection = New Collection
ss.Add(1)
ListBox1.Items.Add(1)
Do
j += 1
Dim s As Integer
For Each s In ss
If (j = 2 * s + 1) Or (j = 3 * s + 1) Then
i += 1
ListBox1.Items.Add(j)
ss.Add(j)
End If
Next
Loop Until i = 50
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询