2012年11月20日 星期二

奇摩知識



內容 : 
題目描述
         大家都知道二進制是由0和1兩種數字組成的,十進制轉二進制, 小明現在要玩一個遊戲, 就是由1數到n,每數到一個數, 這個數的二進制有多少個1, 小明就要站起多少次, 例如數到9, 由於其二進制為1001, 所以小明要站起來兩次, 為了知道自己能否應付這個遊戲, 請你為小明算出, 由1數到n他必須站起來多少次?
輸入說明 :
每一行有一個數字N (1≦N≦1,0000,0000)
輸出說明 :
請輸出小明總共要站起來的次數。請輸出mod 1000000000 之後的結果
範例輸入 :help
12
範例輸出 :
22
提示 :
※ 數學、遞迴

1 則留言:

  1. Dim num, ans, allans As Integer
    Private Sub Form_Load()
    Me.Hide
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Input #1, num
    For i = 1 To num
    x = i
    Do
    y = x Mod 2
    x = x \ 2
    ans = ans + y
    Loop Until x = 0
    allans = allans + ans
    ans = 0
    Next
    Print #2, allans
    Close #2
    Close #1
    End
    End Sub

    回覆刪除