题目描述
张三需要找个工具人来帮忙计算数学题,这样的工具人太难找了,希望你可以为张三编写一个简单的计算器,因为张三还是小学生,所以只需要非常少的功能
加法
减法
乘法
幂(就是求几次方
1+2=3
1-2=-1
1*2=2
1^2=1
你需要编写一个支持这些运算的程序,并计算给的输入的结果。
输入描述
第一行一个整数n,表示有n组输入
接下来n行,每一行有整数a b和字符op,表示操作数1,操作数2,运算类型
即a op b = ?
约定所有输入的整数范围(-1e9 <= num <=1e9) 1e9表示10的9次方
所有输入都合法
输出描述
输出n行,每一行一个结果
注意:结果可能很大,所有运算对1e9+7取模
输入
5
1 2 +
3 4 -
1000000000 1000000000 *
2 3 ^
2 1000000000 ^
输出
3
-1
49
8
140625001
| 思路:快速幂取模 |
#include<iostream>
using namespace std;
typedef long long int LL;
const int MOD = 1e9 + 7;
LL quick_mod(LL a, LL b) {
LL res = 1;
while (b) {
if (b & 0x1) res = (res*a) % MOD;
a = (a*a) % MOD;
b >>= 1;
}
return res;
}
int main() {
int n, a, b; char ch;
cin >> n;
while (n--) {
cin >> a >> b >> ch;
if (ch == '+') cout << (a + b) % MOD << endl;
else if (ch == '-') cout << (a - b) % MOD << endl;
else if (ch == '*') cout << (a * 1LL * b) % MOD << endl;
else cout << quick_mod(a, b) << endl;
}
return 0;
}
本文介绍了一个简易计算器的设计与实现,该计算器支持加法、减法、乘法及幂运算,并通过快速幂取模算法解决了大数运算的问题。

被折叠的 条评论
为什么被折叠?



