小雷的算式
链接:https://ac.nowcoder.com/acm/contest/88269/F
来源:牛客网
题目描述
小雷今天要写加法题啦!
老师在黑板上写了一个加法式子,小雷想用他喜欢的方式写出来。
小雷喜欢从大到小写下自己的算式并算出答案。
你得到了黑板上的式子,请你用小雷喜欢的方式写出来并计算出答案。
输入描述:
一行一个字符串(仅由加法符号以及数字组成)。
输出描述:
第一行一个字符串是符合小雷喜好的式子。
第二行一个数字是这个算式的答案。
输入示例1
1+2+3+1
输出示例1
3+2+1+1
7
备注:
算式的答案的不超过
2
31
−
1
2^{31}-1
231−1
字符串的长度不超过
2
∗
1
0
5
2*10^5
2∗105
代码内容
// #include <iostream>
// #include <algorithm>
// #include <cstring>
// #include <sstream>//整型转字符串
// #include <stack>//栈
// #include <deque>//堆/优先队列
// #include <queue>//队列
// #include <map>//映射
// #include <unordered_map>//哈希表
// #include <vector>//容器,存数组的数,表数组的长度
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e5+10;
ll a[N],cnt;
int main()
{
string s;
cin>>s;
for(ll i=0;i<s.size();i++)
{
if(s[i]!='+')
{
ll n=0;
while(s[i]!='+'&&i<s.size())
{
n=n*10+s[i++]-'0';
}
a[cnt++]=n;
i--;
}
}
sort(a,a+cnt,greater<>());
ll sum=a[0];
cout<<a[0];
for(ll i=1;i<cnt;i++)
{
cout<<"+"<<a[i];
sum+=a[i];
}
cout<<endl<<sum;
return 0;
}