题目

有趣的乘法:输入一个个位数不是5的奇数p,寻找一个整数s,使得p×s = 1111...1(每位数字均为1),要求输出整数s及它们乘积中1的个数(即乘积有几个1构成)。例如,当p=13时,13*8547=111111,因此整数s为8547,乘积由6个1构成;当p=23时,整数s为48309178743961352657,乘积由22个1构成。 算法思想: 首先生成一个比p大的全1数a,如果a能整除p,则算法结束,否则继续扩大a的位数,如此继续,直至a整除p。 程序运行界面如下图所示,在文本框Text1中输入整数p,单击“计算”按钮,在文本框Text2中输出整数s,在文本框Text3中输出乘积中1的个数。 小明依据上述描述设计如下VB程序。请回答下列问题: (1) 当p=3时,整数s为。 (2) 请在划线处填入合适的语句。 Private Sub Command1_Click()     Dim p As Long, a As Long, b As Long, c As Long, n As Long     Dim s As String  '存放整数s,因为该数较大,因此采用字符串存储     Do While True   '判断输入的整数p是否为个位不是5的奇数         p = Val(Text1.Text)         If p Mod 2 < > 0 And p Mod 5 < > 0 Then Exit Do     Loop     a = 0     n = 0     Do While a < p                  n = n + 1     Loop     c = a Mod p     s = Str(a \ p)     Do While c < > 0         a = c * 10 + 1                  s = s & b         n = n + 1              Loop     Text2.Text = s     Text3.Text = Str(n) End Sub 答案: 【1】37 【1】a = a * 10 + 1【2】b = a \ p【3】c = a Mod p或c=a-b*p
信息技术 试题推荐
最近更新