題目:請您寫一個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; } }