问题描述
输入:
初始数在第一行
从第二行开始为“+”或“*”符号加一个数
最后一行为“%”和一个整数,为对该整数取余数
输出:
给出通过初始数按顺序进行符号运算后对最后一行整数取余数的值
例:
input data:
5
+ 3
* 7
+ 10
* 2
* 3
+ 1
% 11
answer:
代码
python方法
initial = int(input())
sign = ''
number = 0
total = initial
while true:
[sign, number] = list(map(str,input().split()))
if sign == '+':
total = total + int(number)
elif sign == '*':
total = total * int(number)
elif sign == '%':
total = total % int(number)
break
print(total)
建立如下ui
代码如下
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim inputNum As Integer
Dim array1() As String
Dim array2() As String
Dim linesNum As Integer
Dim result As Integer
inputNum = Val(TextBox1.Lines(0))
linesNum = TextBox1.Lines.GetUpperBound(0)
array1 = Split(Trim(TextBox1.Lines(linesNum)))
result = inputNum
Dim modNum As Integer
modNum = Val(array1(1))
For i As Integer = 1 To linesNum - 1
array2 = Split(Trim(TextBox1.Lines(i)))
Select Case array2(0)
Case "+"
result += Val(array2(1))
Case "*"
result = result Mod modNum
result *= Val(array2(1))
End Select
Next i
result = result Mod modNum
TextBox2.Text = Str(result)
End Sub
End Class
核心问题在于当数字过大时,如最后的取余数为1.718 x 10^47 % 9833时,尽管有些语言可以使数取任意长度,主要思路是在中间计算过程中取余数来减小数如
(10 + 10) * 7 % 11 = 8
你可以先计算(10+10)%11得9,再7*9得到63取余得到8有相同的结果,得到的思路是在进行乘法结果前可以使用取余数来减小数。