题目:请您写一个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; } }