题目描述
给定两个位数不超过 100,且为 10 的幂次方的整数,你需要计算出他们相乘或者相加后的结果。
输入格式
输入共三行。
第一行和第三行分别有一个整数,表示准备计算的数。第二行一个字符,为 *
(乘)或 +
(加),表示需要进行哪种运算。数据为 Windows
下生成,请注意后缀含有的 \r
。
输出格式
输出一行一个整数,表示运算的结果。
输入输出样例
输入 #1
1000 * 100输出 #1
100000
输入 #2
10000 + 10输出 #2
10010
输入 #3
10 + 1000输出 #3
1010
输入 #4
1 * 1000输出 #4
1000
说明/提示
说明
题目译自 COCI2008-2009 CONTEST #6 T1 BUKA。
题目难度
普及-
参考思路
我们设这两个数分别为 和
(假设 a≥b)。
:显然将
中的第 b 位加上 1 即可。
x
:显然是
。
依题意模拟即可。
参考代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,b;
char op;
cin>>a>>op>>b;
int len1=a.length(),len2=b.length();
if (len1<len2) swap(a,b),swap(len1,len2); //从小到大排序
if (op=='+')
++a[len1-len2],cout<<a; //将第 b 位 +1
else
{
putchar('1');
for (int i=1;i<len1;i++) putchar('0'); //注意数字前面有个 1 所以长度要 -1
for (int i=1;i<len2;i++) putchar('0');
}
return 0;
}