h = 1000
For i = 1 To 10000
x = Mid(Str(i), Len(Str(i)), 1)
y = Mid(Str(i), 1, Len(Str(i)) - 1)
If Val(x & y) = 2 * Val(y & x) Then
Exit For
End If
Next i
If i > h Then
MsgBox h & "以内无此数"
Else
MsgBox i
End If

解决方案 »

  1.   

    我都有算到7位了,10000内当然没有了,如果有2G的CPU估计会好些:)
      

  2.   

    For i = 1 To h
      

  3.   

    Dim B As Boolean
    Private Sub Command1_Click()
    Dim StrInt As String, temp As String
    Dim j As Long, k As Long
    j = 11
    Do While B
        DoEvents
        StrInt  = CStr(j)
        Label1.Caption = StrInt 
        temp = Right(StrInt , 1) & Left(StrInt , Len(StrInt ) - 1)
        k = CLng(temp)
        Label2.Caption = k
        If (k / j) = 2 Then
            MsgBox j
            Exit Do
        End If
        j = j + 1
    Loop
    End SubPrivate Sub Command2_Click()
    B = False
    End SubPrivate Sub Form_Load()
    B = True
    End Sub
      

  4.   

    嗯, gump2000(阿甘) 说得有道理,说不定,此题无解!:)
      

  5.   

    设原数为 
    __ 
    AX 假设A的长度为n X就是最末位 
    则此数=10*A+X 
    新数=10^n(10的n次)*X+A 
    方程 
    (10^n)*X+A=2*(10*A+X) 
    但是不是所有的n都是有解的,因为要满足A是n位,并且X是一位数
    整理后得到 
    19A=99...998X 
    所以99...9998必须被19整除 而99999999999999998/19=5263157894736842是整数 
    所以解出 
    5263157894736842*X=A 
    X取2 原数为105263157894736842 新数为 210526315789473684 符合 
    X取3 原数为157894736842105263 新数为 315789473684210526 符合 
    X取4 原数为210526315789473684 新数为 421052631578947368 符合 
    ... 
    这样有很多组都可以满足,只要长度符合就可以了 类似的,可能有很多999999..98能被19整除,这样就会有更多解 
      

  6.   

    还是gump2000(阿甘) 的方法好,我是死脑筋,不会转弯:)
      

  7.   

    BTW:这道题是一道小学奥林匹克的题目
      

  8.   

    BTW:这道题是一道小学奥林匹克的题目
      

  9.   

    以下笨算法只能求得第一个符合条件的整数
    不过还是阿甘的算法好多了,用A=(10^n-2)X/19, 
    看来我还得加油加油再加油啊
    Private Sub Command1_Click()
    Dim i
    i = 21
    Do Until 2 * i = Right(i, 1) & Mid(i, 1, Len(i) - 1)
        If Right(i, 1) > Mid(i, 1, 1) Then
           i = i + 1
           DoEvents
        Else
           i = i + 1
        End If
        Text1.Text = i
    Loop
    MsgBox i
    End Sub
      

  10.   

    你们机子的配置是怎样的?我机子的CPU是 K6-2 350看来没有算的必要了
      

  11.   

    阿甘I服了YOU,不过我觉得你有点卖乖,呵呵,交个朋友。
      

  12.   

    再解释一下阿甘的算法,阿甘没意见吧
    设原数为Y=AX,其中A为N位数,X为一位数,则Y=A*10+X
    移位后为Z=XA,则Z=X*10^N+A
    因为Z=2*Y,则X*10^N+A=2*(A*10+X)
    换算后得:19A=X*10^N-2*X
    计算公式为:A=X*(10^N-2)/19
    1、因为19是质数,所以(10^N-2)/19必为整形数
    2、因为X为一位数,用枚举法1-9求出A,若A为N位整形数就是所求结果
    按上述算法,计算一个N位数最多只需9*N次或更少,因为第一个条件已经限定必须为整数,即计算一个100位数只需运算900次或更少。
    迟点我拿出全部程序
      

  13.   

    算法如下就可以了,只可惜VB中的LONG的长度不够,所以根本算不出来
    VC就没问题了Private Sub Command1_Click()
    Dim A As Double
    Dim X As Integer
    Dim N As Integer
    Dim maxN As Integer
    Dim dC As Double
    Dim nC As Long
    maxN = 20  '假设最多算至20位数
    For N = 1 To maxN Step 1
        dC = (10 ^ N - 2) / 19
        nC = CLng(dC)
        If dC - nC = 0 Then
            For X = 2 To 9 Step 1
                A = X * nC
                If Len(A) = N Then
                    MsgBox "Number=" & A & X
                End If
            Next X
        End If
    Next N
    End Sub
      

  14.   

    (A3-070)求證:不存在這樣的整數,把它的首位數字移到末位之後,得到的數
    是原數的兩倍。 copy wuwutao(濤哥)的貼:)设原数为Y=AX,其中A为一位数,X为N位数,则Y=A*10^N+X
    移位后为Z=XA,则Z=X*10+A
    因为Z=2*Y,则X*10+A=2*(A*10^N+X)
    换算后得:8X=(2*10^N-1)A
    if A<>8 then 
          if A=2 or A=4 then 
                前後約分
          endif
          前面恆為偶<>後為恆為奇
          命題得證=true
    else 'a=8
          原數Y=8******(不可能出現一個數是其兩倍)
          命題得證=true
    end if按上述算法,因為0和>=5的數不能出現在首位。计算一个N位数最多只需4*N次或更少,因为第一个条件已经限定必须为整数,即计算一个100位数只需运算400次或更少。
      

  15.   

    修正:
    Dim A As Double
    Dim X As Integer
    Dim N As Integer
    Dim maxN As Integer
    Dim dC As Double
    Dim nC As Long
    maxN = 20  '假设最多算至20位数
    For N = 1 To maxN Step 1
        dC = (10 ^ N - 2) / 19
        nC = CLng(dC)
        If dC - nC = 0 Then
            For X = 2 To 9 Step 1
                A = X * nC
                 'If Len(A) = N Then
                 '此处不应该判断长度,直接判断是否符合
                 'If 2*(A*10+X)=x*10^N+A then
                    MsgBox "Number=" & A & X
                End If
            Next X
        End If
    Next N
      

  16.   

    程序我编好了,不过long好象不够用,正在算