高分求帮忙修正一段简单vb算法代码

来源:百度知道 编辑:UC知道 时间:2024/05/04 22:31:12

用户名为x
z的初值为8E5EB4E5
y为固定值333
注册码为a

算法如下
依次(从后向前取)取字符串x每一位的ASCII数值记作i
y = z - 333 % i
z = z + y

Private Sub Command1_Click()
z = 8E5EB4E5
strtmp = Text1.Text
a = Val(Text1.Text)
For i = 1 To Len(a)
y = z - 333 Mod Asc(Mid$(a, 1,1))
z = z + y
Next i
Text2.Text = m
End Sub

这段代码只是写了大概,也没有赋值,错漏百出,只是想让大家看得出的意思。求各位大虾帮忙写一个正确的,学习ing
下午在c语言区也求了,但是还没人答上来,就在vb区看看vb的代码应该怎么写
下面我演示一下过程,希望大家能看明白一些。譬如,用户名x=12345678901234,先取4的ASCII值34,y = z - 333 % i=8E5EB4E5-(333 % 34)=8E5EB4BE,z=z+y=8E5EB4E5+8E5EB4BE=1CBD69A3 ;然后再来下一个,先取3的ASCII值33,y = z - 333 % i=1CBD69A3-(333%33)=1CBD69A0,z=z+y=1CBD69A3+1CBD69A0=397AD343 ……
依此类推,一值算到最后z的值就是注册码a的值。
还有,某些运算可能涉及十六进制

多谢lzh741206的回答,程序运行了起来的,但是计算的结果(转为16进制后也是)和预期的不一样,还有注册码的输出应该是用16进制输出的,不知如何实现?

Private Sub Command1_Click()
z = &H8E5EB4E5
strtmp = Text1.Text
a = Val(Text1.Text)
For i = 1 To Len(strtmp )
y = z - 333 Mod Asc(Mid$(strtmp,i,1))
z = z + y
Next i
Text2.Text = hex(z)
End Sub

1、算法说明

1) 初等数学

递推法

又称为“迭代法”,其基本思想是把一个复杂的计算过程转化为简单过程的多次重复。每次重复都在旧值的基础上递推出新值,并由新值代替旧值。

问题:猴子吃桃子

小猴子有若干桃子,第一天吃掉一半多一个;第二天吃掉剩下的一半多一个…..;如此,到第七天早上要吃时,只剩下一个桃子。问小猴子一开始共有多少桃子?

分析:可以最后一天桃子数推出倒数第二天的桃子数;再从倒数第二天推出倒数第三天桃子数………..

设第n天桃子数为xn,前一天桃子数是:xn-1,则有关系:

xn=xn-1/2-1

程序如下:

以下是引用片段:
Private Sub Command1_Click()
Dim n%, i%
x = 1 '第七天桃子数
Print "第七天桃子数: 1只"
For i = 6 To 1 Step -1
x = (x + 1) * 2
Print "第" & i & "天桃子数:" & x & "只"
Next i
End Sub

穷举法

又称枚举法,即将所有可能情况一一测试,判断是否满足条件,一般用循环实现。