题目:请您写一个reverseAdd函数,该函数根据输入的两个正整数a和b,然后分别将他们的数字按照高位在右边的方式反转后求和。
例如:reverseAdd(123,456)== 321 + 654 == 975
程序原型:int reverseAdd(int a,int b)
输入:输入的a,b参数均为有效取值范围[1,70000]区间上的正整数。
输出:通过函数返回值输出结果;若输入的a或者b参数超出取值范围(小时1或者大于70000),则应输出-1;否则应按照要求输出数字反转后的和。
代码如下:
#include "iostream"
#include "algorithm"
#include "string"
using namespace std;
int main()
{
string a,b;
while(cin>>a>>b)
{
int num_a=0,num_b=0;
for(int i=0;i<a.size();i++)
num_a=num_a*10+a[i]-'0';
for(int i=0;i<b.size();i++)
num_b=num_b*10+b[i]-'0';
if(num_a<1||num_a>70000||num_b<1||num_b>70000) cout<<-1<<endl;
else{num_a=0;num_b=0;
for(int i=a.size()-1;i>=0;i--)
num_a=num_a*10+a[i]-'0';
for(int i=b.size()-1;i>=0;i--)
num_b=num_b*10+b[i]-'0';
cout<<num_a+num_b<<endl;
}
}
}
题目:消除重复数字
- 时间限制:3s
- 空间限制:32768K
- 题目描述:
给定一个正整数,给出消除重复数字以后最大的整数 - 输入描述:
正整数,注意考虑长整数
输出描述:
消除重复数字以后的最大整数 - 示例
输入:423234
输出:432
解题思路:利用set的特性进行去重,再自定义一个降序的类就可以完成任务
set的自定义排序函数详细讲解:https://blog.csdn.net/u012604810/article/details/79804928
#include "iostream"
#include "algorithm"
#include "string"
#include "set"
using namespace std;
struct cmp {
bool operator() (const int& lhs, const int& rhs) const{
return lhs > rhs;
}
};
int main()
{
string str;
while(cin>>str){
set<int,cmp> num;
for(int i=0;i<str.size();i++){
num.insert(str[i]-'0');
}
set<int,cmp>::iterator it=num.begin();
while(it!=num.end()){
cout<<*it;it++;
}cout<<endl;
}
}
来源:oschina
链接:https://my.oschina.net/u/4368331/blog/3459660