內容 :
小明參加寒假的冬令營,闖關活動中有一關是猜密碼遊戲。首先關主會給闖關者一組阿拉伯數字組成的字串,闖關者要先判斷它是否是不是真正藏有密碼的字串,藏有密碼的字串有下列特性:
1.它由阿拉伯數字1,2,3,4,5,6,7,8,9組成,且長度介於10至30字元之間。
2.它必須是迴文(palindrome)字串,也就是不論從左到右或從右到左都是一樣的字串,它可以是奇數或偶 數個字元。例如:12345654321、3344554433等。
3.字串中兩兩接連的數字之間,後面的數字一定不會大於前面的數兩唄。例如:22221512222 就不是一個 藏有密碼的字串,因為'5'大於'1'的兩倍。
當闖關者確定藏有密碼時,只要將字串中的偶數字元挑出,就可以得到密碼順利過關了。舉個例子來說:若輸入的字串是 42643734624 ,雖然它是一個迴文字串,但是字串中的第三個數字'6'大於第二個數字'2'的二倍,第六個數字'7'也大於第五個數字'3'的二倍,所以它就不是一個藏有的密碼字串。另外,若輸入的字串是 423435534324 ,它不但是一個迴文字串,且兩兩接連的數字之間,後面的數字一定不會大於前面數字的二倍,所以它就是一個藏有的密碼字串,而藏在此字串中的密碼就是 424424(密碼由字串中偶數的數字所組成,如此例中畫底線的部分→423435534324)。你可以寫一個程式協助小明快速的解出密碼嗎?
1.它由阿拉伯數字1,2,3,4,5,6,7,8,9組成,且長度介於10至30字元之間。
2.它必須是迴文(palindrome)字串,也就是不論從左到右或從右到左都是一樣的字串,它可以是奇數或偶 數個字元。例如:12345654321、3344554433等。
3.字串中兩兩接連的數字之間,後面的數字一定不會大於前面的數兩唄。例如:22221512222 就不是一個 藏有密碼的字串,因為'5'大於'1'的兩倍。
當闖關者確定藏有密碼時,只要將字串中的偶數字元挑出,就可以得到密碼順利過關了。舉個例子來說:若輸入的字串是 42643734624 ,雖然它是一個迴文字串,但是字串中的第三個數字'6'大於第二個數字'2'的二倍,第六個數字'7'也大於第五個數字'3'的二倍,所以它就不是一個藏有的密碼字串。另外,若輸入的字串是 423435534324 ,它不但是一個迴文字串,且兩兩接連的數字之間,後面的數字一定不會大於前面數字的二倍,所以它就是一個藏有的密碼字串,而藏在此字串中的密碼就是 424424(密碼由字串中偶數的數字所組成,如此例中畫底線的部分→423435534324)。你可以寫一個程式協助小明快速的解出密碼嗎?
輸入說明 :
輸入字串只有一行,由阿拉伯數字1,2,3,4,5,6,7,8,9組成,長度介於10至30字元之間。
輸出說明 :
第一行輸出密碼。輸入字串並非藏有密碼的字串,輸出"INCORRECT"訊息。輸入字串若為藏有密碼的字串,但字串中並無包含偶數,輸出"0"。
範例輸入 :
輸入範例一: 154321123451
輸入範例二: 123456777654321
範例輸出 :
輸出範例一: INCORRECT
輸出範例二: 246642
Dim num, str1, str2, ans As String
回覆刪除Dim find As Boolean
Private Sub Form_Load()
Me.Hide
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As 2
Do
find = True: ans = "": str1 = "": str2 = ""
Input #1, num
For i = 1 To Len(num)
str1 = str1 & Mid(num, i, 1)
str2 = str2 & Mid(num, Len(num) + 1 - i, 1)
Next
If str1 = str2 Then
For i = 1 To Len(num)
If Val(Mid(num, i, 1)) * 2 < Val(Mid(num, i + 1, 1)) Then Print #2, "INCORRECT": find = False: Exit For
If Val(Mid(num, i, 1)) Mod 2 = 0 Then ans = ans & Mid(num, i, 1)
Next
If find = True And ans <> "" Then Print #2, ans
If find = True And ans = "" Then Print #2, "0"
End If
Loop Until EOF(1)
Close #2
Close #1
End
End Sub
加油:D
回覆刪除