求 1~100000 中,其分解的N次方和恰等於原來的數。
請依次方大小依序列出
( 2 <= N <= 10 )
範例:
153 = 1^3 + 5^3 + 3^3
輸出:
153 的 3 次方和與 153 相符
370 的 3 次方和與 370 相符
371 的 3 次方和與 371 相符
407 的 3 次方和與 407 相符
1634 的 4 次方和與 1634 相符
8208 的 4 次方和與 8208 相符
9474 的 4 次方和與 9474 相符
4150 的 5 次方和與 4150 相符
4151 的 5 次方和與 4151 相符
54748 的 5 次方和與 54748 相符
92727 的 5 次方和與 92727 相符
93084 的 5 次方和與 93084 相符
Private Sub Form_Load()
回覆刪除Me.Hide
Open App.Path & "\out.txt" For Output As #1
Dim tmp, ch As Boolean, ins As String, ans
For k = 2 To 10
For L = 2 To 100000
ins = L
ans = 0
For i = 1 To Len(ins)
tmp = Mid(ins, i, 1)
ans = ans + tmp ^ k
Next
If ans = Int(ins) Then Print #1, ins & " 的 " & k & " 次方和與 " & ins & " 相符"
Next
Next
Close
End
End Sub
//-------------------
還蠻短的題目
這種蠻暴力的解法
arro好,
回覆刪除程式正確。
2個小地方,
1.那個多出來的ins,和L有不同嗎?
2.這個程式,還是用字串的方式去解數字,雖然說,黑貓白貓,能捉老鼠的,就是好貓。 再試試如果不用字串的解法呢?
先用簡單的來做,
回覆刪除做出來跑得有點慢說。
Private Sub Form_Load()
Open App.Path & "\out.txt" For Output As #1
For i = 2 To 100000
For N = 2 To 10
X = i
Y = 0
Do
Y = Y + (X Mod 10) ^ N
X = X \ 10
If X = 0 And i = Y Then Print #1, i; "的"; N; "次方和與"; i; "相符": Exit For
Loop Until X = 0
Next N
Next i
Close #1
End Sub
Private Sub Form_Load()
回覆刪除Me.Hide
Open App.Path & "\out.txt" For Output As #1
Dim tmp, ch As Boolean, ans
For k = 2 To 10
For L = 2 To 100000
ans = 0
For i = 1 To Len(Str(L))
tmp = Val(Mid(Str(L), i, 1))
ans = ans + tmp ^ k
Next
If ans = L Then Print #1, L & " 的 " & k & " 次方和與 " & L & " 相符"
Next
Next
Close
End
End Sub
//---------------------
數字的作法是這樣子嗎!?
Private Sub Form_Load()
回覆刪除Me.Hide
Open App.Path & "\out.txt" For Output As #1
For n = 2 To 10
For m = 2 To 100000
S = m
A = 0
b = 0
Do Until S = 0
f = S Mod 10
b = b + f ^ n
S = S \ 10
Loop
If b = m Then Print #1, m & " 的 " & n & " 次方與 " & b & " 相符"
Next m
Next n
Close #1
End
End Sub
153 的 3 次方與 153 相符
回覆刪除370 的 3 次方與 370 相符
371 的 3 次方與 371 相符
407 的 3 次方與 407 相符
1634 的 4 次方與 1634 相符
8208 的 4 次方與 8208 相符
9474 的 4 次方與 9474 相符
4150 的 5 次方與 4150 相符
4151 的 5 次方與 4151 相符
54748 的 5 次方與 54748 相符
92727 的 5 次方與 92727 相符
93084 的 5 次方與 93084 相符
佑好,
回覆刪除你的程式是可以做出這些答案,但是,雖然是個小題目,你的題目說明看錯了。「依次方大小依序列出」。
不過,題目的說明還是有些不清楚,只有輸出是對的,但是那個範例,只是說明之一。
arro好,
不是。
你還是用到len,mid這些字串的函數。
雖然程式還是正確。
緣尉好,
程式正確。
也利用這個程式,再去分清楚程式中,變數的「職務、責任」,任務單純些,不容易出錯。像那個S。
而兩個迴圈的變數,n跟m,在迴圈中,可以拿來計算,但是,不要再去改變n和m的值了,也就是說不要拿n和m放在「=」號的左邊了。
感覺今天一次三個小時,大家似乎比較有進展哦。看起來很令人高興。
熊掌好,
回覆刪除我會仔細看清楚題目!!
Private Sub Form_Load()
Open App.Path & "\out.txt" For Output As #1
For N = 2 To 10
For i = 2 To 100000
X = i
Y = 0
Do
Y = Y + (X Mod 10) ^ N
X = X \ 10
If X = 0 And i = Y Then Print #1, i; "的"; N; "次方和與"; i; "相符"
Loop Until X = 0
Next i
Next N
Close #1
End Sub
153 的 3 次方和與 153 相符
370 的 3 次方和與 370 相符
371 的 3 次方和與 371 相符
407 的 3 次方和與 407 相符
1634 的 4 次方和與 1634 相符
8208 的 4 次方和與 8208 相符
9474 的 4 次方和與 9474 相符
4150 的 5 次方和與 4150 相符
4151 的 5 次方和與 4151 相符
54748 的 5 次方和與 54748 相符
92727 的 5 次方和與 92727 相符
93084 的 5 次方和與 93084 相符
Private Sub Form_Load()
回覆刪除Me.Hide
Open App.Path & "\out.txt" For Output As #2
Call A1
Close
End
End Sub
Sub A1()
'1~100000
Dim k
For i = 1 To 100000
For x = 2 To 10
k = 0
For j = 1 To Len(i)
m = Mid(i, j, 1)
k = k + Val(m ^ x)
Next
If k = i Then Print #2, i & "的 " & x & " 次方和與 "; i & " 相符"
Next
Next
End Sub
3:07