【10.14 校内测】小x的加法难题 题解
程序员文章站
2024-03-19 08:32:58
...
【10.14 校内测】小x的加法难题 题解
题目
第一节编程课上,老师要求大家写一个程序计算两个正整数的和。
看到小
X
X
X 不屑的眼神后,老师决定给小
X
X
X 增加难度。以求 12 和 3 的和为例,老师在 12 + 3 这个
原始式子里加入一些无用的空格,再把它交给小
X
X
X。
这下小
X
X
X 傻眼了,希望你帮帮他。
输入
第一行包含一个字符串,表示老师给小 X X X 的式子。
输出
若式子的结果不超过 108,则第一行包含一个整数,表示式子的结果;否则第一行包含一个字符串
“
L
a
r
g
e
Large
Large”。
样例
input 1
1 2 + 3
output 1
15
input 2
23456789+98765432
output 2
Large
数据说明
• 对于 30% 的数据,式子中不包含无用的空格,式子的结果不超过 108。
• 对于 100% 的数据,字符串长度不超过 100。
解题思路
输入一个字符串
转换成两个加数
如果其中一个加数长度超过8或者相加的和超过100000000
输出
L
a
r
g
e
Large
Large
否则输出
t
m
tm
tm的和
代码
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int ma=100000000;
string s;
long long l,l1=0,l2=0,i,a,b,p=0;
int main()
{
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
getline(cin,s);
l=s.size();
for (int i=0;i<l;i++)
{
if (l1>8||l2>8) //长度超过
{
printf("Large\n");
return 0;
}
if (s[i]=='+') //加号不用处理
{
p=1; //标记是第几个加数
continue;
}
if (s[i]!=' ') //空格不用处理
if (!p)
{
a=a*10+s[i]-48; //转换成数值
l1++; //累计长度
}
else {
b=b*10+s[i]-48;
l2++;
}
}
if (a+b<=ma) //结果没超
printf("%d\n",a+b);
else printf("Large\n");
fclose(stdin);
fclose(stdout);
return 0;
}