今升一颗星,向老马学习,散分。以下代码请提意见:
Option Explicit
Dim sjs As String
Dim sjh As String
Dim sj() As String
Dim sjc(1 To 3) As String
Dim i As Integer
Dim jw As Integer
Dim l As BytePrivate Sub Command1_Click()
sjs = "111"
For l = 1 To 110
js
Next
Text2 = Len(Text1)
Text3 = Val(Text1)
Print "个位值="; Mid(sjs, 228, 1)
Print "十位值="; Mid(sjs, 228 - 1, 1)
Print "百位值="; Mid(sjs, 228 - 2, 1)
End SubPrivate Sub Form_Load()
Text1 = ""
Text2 = ""
Text3 = ""
End SubPrivate Sub js()
sjh = ""
Text1 = sjs
Text1.Refresh
sjc(1) = "00" & sjs
sjc(2) = "0" & sjs & "0"
sjc(3) = sjs & "00"
ReDim sj(1 To Len(sjc(1)))
For i = Len(sjc(1)) To 1 Step -1
sj(i) = Val(Mid(sjc(1), i, 1)) + Val(Mid(sjc(2), i, 1)) + Val(Mid(sjc(3), i, 1)) + jw
If Len(sj(i)) = 2 And i <> 1 Then '进位计算
jw = Val(Mid(sj(i), 1, 1))
sj(i) = Val(Mid(sj(i), 2, 1))
ElseIf Len(sj(i)) = 1 Then
jw = 0
sj(i) = sj(i)
ElseIf Len(sj(i)) = 2 And i = 1 Then
sj(i) = sj(i)
jw = 0
End If
sjh = sj(i) & sjh
Next
sjs = sjh
Text1 = sjs
End Sub
Option Explicit
Dim sjs As String
Dim sjh As String
Dim sj() As String
Dim sjc(1 To 3) As String
Dim i As Integer
Dim jw As Integer
Dim l As BytePrivate Sub Command1_Click()
sjs = "111"
For l = 1 To 110
js
Next
Text2 = Len(Text1)
Text3 = Val(Text1)
Print "个位值="; Mid(sjs, 228, 1)
Print "十位值="; Mid(sjs, 228 - 1, 1)
Print "百位值="; Mid(sjs, 228 - 2, 1)
End SubPrivate Sub Form_Load()
Text1 = ""
Text2 = ""
Text3 = ""
End SubPrivate Sub js()
sjh = ""
Text1 = sjs
Text1.Refresh
sjc(1) = "00" & sjs
sjc(2) = "0" & sjs & "0"
sjc(3) = sjs & "00"
ReDim sj(1 To Len(sjc(1)))
For i = Len(sjc(1)) To 1 Step -1
sj(i) = Val(Mid(sjc(1), i, 1)) + Val(Mid(sjc(2), i, 1)) + Val(Mid(sjc(3), i, 1)) + jw
If Len(sj(i)) = 2 And i <> 1 Then '进位计算
jw = Val(Mid(sj(i), 1, 1))
sj(i) = Val(Mid(sj(i), 2, 1))
ElseIf Len(sj(i)) = 1 Then
jw = 0
sj(i) = sj(i)
ElseIf Len(sj(i)) = 2 And i = 1 Then
sj(i) = sj(i)
jw = 0
End If
sjh = sj(i) & sjh
Next
sjs = sjh
Text1 = sjs
End Sub
Option Explicit
Dim sjs As String
Dim sjh As String
Dim sj() As String
Dim sjc(1 To 3) As String
Dim i As Integer
Dim jw As Integer
Dim l As BytePrivate Sub Command1_Click()
sjs = "111"
For l = 1 To 110
js
Next
Text2 = Len(Text1)
Text3 = Val(Text1)
Print "个位值="; Mid(sjs, 228, 1)
Print "十位值="; Mid(sjs, 228 - 1, 1)
Print "百位值="; Mid(sjs, 228 - 2, 1)
End SubPrivate Sub Form_Load()
Text1 = ""
Text2 = ""
Text3 = ""
End SubPrivate Sub js()
sjh = ""
Text1 = sjs
Text1.Refresh
sjc(1) = "00" & sjs
sjc(2) = "0" & sjs & "0"
sjc(3) = sjs & "00"
ReDim sj(1 To Len(sjc(1)))
For i = Len(sjc(1)) To 1 Step -1
sj(i) = Val(Mid(sjc(1), i, 1)) + Val(Mid(sjc(2), i, 1)) + Val(Mid(sjc(3), i, 1)) + jw
If Len(sj(i)) = 2 And i <> 1 Then '进位计算
jw = Val(Mid(sj(i), 1, 1))
sj(i) = Val(Mid(sj(i), 2, 1))
ElseIf Len(sj(i)) = 1 Then
jw = 0
sj(i) = sj(i)
ElseIf Len(sj(i)) = 2 And i = 1 Then
sj(i) = sj(i)
jw = 0
End If
sjh = sj(i) & sjh
Next
sjs = sjh
Text1 = sjs
End Sub
你的理解正确,是应BAIDU网友短消息的要求而做。
Text1中不是正显示字符串表示的计算结果吗:
10736201288847422580121456504669550195985072399422480480477591117562
50761957833470224912261700936346214661037430929869677777863300673101
59463303558666910091026017785587295539622142057315437069730229375357
546494103400699864397711
共228字符长。
首先可以确认 个位数 1
十位数 (1*111)mod 10=1 '这里111 表示指数
百位数 (111+1)*111/2 mod 10=6
今天在网上看到一个题:求111的111次方的个位、十位、百位数分别是几 ?
我想帮帮忙,但没弄出来。
请用您的方法给出答案: ?8 另外。我想把这个数完全显示出来:111^111 我还以为很简单,就算:111^111,它的结果为:1.07362012888474E+227
因为10000000000(后面十个零)=1E+10
所以它应该=1.07362012888474*1(1后面跟227个零)
也就是说,完整的它应该有228位数字。,,也不算多啊。就几排而以。怎么让它全部显示在一个文本框里!!!!!!!!我好想知道答案。
10736201288847422580121456504669550195985072399422480480477591117562
50761957833470224912261700936346214661037430929869677777863300673101
59463303558666910091026017785587295539622142057315437069730229375357
546494103400699864397711
共228字符长。// 我的意思是 把解决这个的方法写成一个函数收藏起来比如
dim b as string
a=111
for i = 1 to 110
a=a*111
next i
b=函数(a)
输出的结果b=228字符长的字串我希望有人能把这个 函数 写出来 不仅只适用这个题目....
Sub Main()
Dim i As Long, l As Long
l = 1
For i = 1 To 111
l = (l * 111) Mod 1000
Next
Debug.Print l
End Sub
百位数应该是
(((111+1)*111/2 mod 10)+ 111 \10)mod 10 = 7
是否有更好的方法?
依据Tiger_Zhao VB老鸟的代码,略做修改,可获得最后7位数字Private Sub Command1_Click()
Dim i As Long, l As Long
l = 1
For i = 1 To 111
l = (l * 111) Mod 10000000
Next
Text1 = l
End Sub
难道这不是中文?
难道这不是中文?
就求111的111次方的个位、十位、百位数分别是几的VB代码解决方案,你的代码最佳.咱愿望是提升VB论坛的人气,而不是
到此为斗嘴的,惹你如此生气,非常抱歉.
题目来源如下(属中文):
BAIDU网友iegerm短消息内容:
今天在网上看到一个题:求111的111次方的个位、十位、百位数分别是几 ?
我想帮帮忙,但没弄出来。
请用您的方法给出答案: ?8 另外。我想把这个数完全显示出来:111^111 我还以为很简单,就算:111^111,它的结果为:1.07362012888474E+227
因为10000000000(后面十个零)=1E+10
所以它应该=1.07362012888474*1(1后面跟227个零)
也就是说,完整的它应该有228位数字。,,也不算多啊。就几排而以。怎么让它全部显示在一个文本框里!!!!!!!!我好想知道答案。
你怎么知道111的111次方的最后三位数
见17楼和6楼代码
个位固定是1
十位循环0123456789
百位也会循环13605186567926174212358273087891483964345704952090const
CODE = '01360518656792617421235827308789148396434570495209';
var
N: Integer;
A, B, C: Char;
begin
N := 111;
C := '1';
B := '0123456789'[N mod 10 + 1];
A := CODE[N mod Length(CODE) + 1];
Writeln(A + B + C);
end;
Dim CODE_LEN As Long = 50
Dim L As Long
Dim N As Long = 111
L = 1 + 10 * (N Mod 10) + 100 * CODE(N Mod CODE_LEN)
自己编代码运算可以参考《系列文章-大数阶算之计算从入门到精通》(http://blog.csdn.net/liangbch/category/292924.aspx)
Dim a() As Long, s() As String, i As Long, k As Long, temp As Long
ReDim a(1 To 1)
a(1) = 1
stimer = Timer
Do While k < n
k = k + 1
temp = UBound(a)
For i = 1 To temp
a(i) = a(i) * x
Next
ReDim Preserve a(1 To temp + Len(CStr(x)))
For i = 1 To UBound(a) - 1
temp = a(i) \ 10
a(i) = a(i) Mod 10
a(i + 1) = a(i + 1) + temp
Next
temp = UBound(a)
If a(temp) = 0 Then ReDim Preserve a(1 To temp - 1)
Loop
temp = UBound(a)
ReDim s(1 To temp)
For i = 1 To temp
s(i) = a(temp + 1 - i)
Next
result = Join(s, "")
Debug.Print result
Debug.Print x & "^" & n & " : 用时 "; Timer - stimer & " 秒, 结果 " & temp & " 位"
Erase a()
Erase s()
End SubSub getit()
power 111, 111
End Sub
如果把111^111看成是(1+110)^111,然后用泰勒级数展开,可得:1+111*110+(111*110/2!)*110^2+(111*110*109/3!)*110^3+.......
由于求得最高位是百位,所以110^2以后的项已经没有用了!
所以只求前三项的和就可以得111^111的个位、十位、百位了!
Private Sub Form_Load()
Dim l As Long, s As String
l = 1 + 111 * 110 + 111 * 110 / 2 * 110 ^ 2
s = CStr(l)
Debug.Print "个位:"; Right(s, 1)
Debug.Print "十位:"; Left(Right(s, 2), 1)
Debug.Print "百位:"; Left(Right(s, 3), 1)End Sub
进入管理贴子,只有 我要提问 生成贴子 删除贴子 修改贴子 锁定贴子 贴子加分
无满意结贴几项
无结贴项
!!!!
!!!
!!
!
进入管理贴子,只有 我要提问 生成贴子 删除贴子 修改贴子 锁定贴子 贴子加分 无满意结贴
几项
无结贴项
!!!!
!!!
!!
!