欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【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;    
} 
相关标签: 字符串