如何用编程将1个数分解为不重复6个数(1到30之间)之和,该理论是能够有结果的。

来源:百度知道 编辑:UC知道 时间:2024/06/29 01:51:32
但我程序思路有问题,不能得到正确的答案。其中能被分解最小一个数为21=1+2+3+4+5+6,只有一组数值能满足,最大数为165=25+26+27+28+29+30,也只有一组数值能满足,22和164也只有一组数值能满足,从23和163开始能满足条件的数值从2组开始递加,本人目前无法解决的是数值组中有重复数问题,导致程序运行结果太大,因本人只学过QBasic,希望最好能用QB给以解答。但其他语言也不限,烦请给出程序源代码,谢谢,急盼回复。

终于弄出来了:用VB写的,估计你看得懂,都是basic
Private Sub Command1_Click()
Dim xt As Long
Dim xtt As Long
Dim xts As Long
xtt = Val(Text1.Text)
xts = xtt - 21
List1.Clear
xt = 0
For i6 = xts \ 6 To Min(24, xts)
For i5 = 0 To Min(25, xts - i6)
If i5 < i6 + 1 Then
For i4 = 0 To Min(26, xts - i6 - i5)
If i4 < i5 + 1 Then
For i3 = 0 To Min(27, xts - i6 - i5 - i4)
If i3 < i4 + 1 Then
For i2 = 0 To Min(28, xts - i6 - i5 - i4 - i3)
If i2 < i3 + 1 Then
For i1 = 0 To Min(29, xts - i6 - i5 - i4 - i3 - i2)
If i1 < i2 + 1 And (i1 + i2 + i3 + i4 + i5 + i6) = xts Then
List1.AddItem CStr(i1 + 1) + "+" + CStr(i2 + 2) + "+" + CStr(i3 + 3) + "+" + CStr(i4 + 4) + "+" + CStr(i5 + 5) + "+" + CStr(i6 + 6) + "=" + CStr(i1 + i2 + i3 + i4 + i5 + i6 + 21)
xt = xt + 1
End If
Next i1
End If
Next i2
End If
Next i3<

如何用编程将1个数分解为不重复6个数(1到30之间)之和,该理论是能够有结果的。 在excel中如何用公式统计不重复的值的个数 从1到33中选6个数(可以重复),使其和为80。 用0,1,2,3,4,5这6个数组成没有重复数字的四位偶数,将这些偶数从小到大排列起来,第71个数是? 如何实现,在1-33之间取6个数为一组,6个数从小到大排列,且不能重复,然后把所有可能列表。 如何实现,在1-33之间取6个数为一组,6个数从小到大排列,且不能重复,然后把所有可能列表 寻求VB代码 如何用JAVA实现,打印 1 到 100,第一行 1 个数,第二行 2 个数。。。。依次类推。 用PASCAL语言实现一个程序 要求从1到33里列出不重复的6个数加起来的和为100的数组 在从1到33中的33个数中选出6个数,不重复的所有组合数的方法在EXCEL中运行,谢谢各位高手了 从0-9个数中选择6个数,每6个数不重复,共有多少个6位数啊?