藍橋杯(vip)試題 反置數
阿新 • • 發佈:2019-01-10
題目描述
演算法訓練 反置數
時間限制:1.0s 記憶體限制:512.0MB
問題描述
一個整數的“反置數”指的是把該整數的每一位 數字的順序顛倒過來所得到的另一個整數。如果一個整數的末尾是以0結尾,那麼在它的反置數當中,這些0就被省略掉了。比如說,1245的反置數是 5421,而1200的反置數是21。請編寫一個程式,輸入兩個整數,然後計算這兩個整數的反置數之和sum,然後再把sum的反置數打印出來。要求:由 於在本題中需要多次去計算一個整數的反置數,因此必須把這部分程式碼抽象為一個函式的形式。
輸入格式:輸入只有一行,包括兩個整數,中間用空格隔開。
輸出格式:輸出只有一行,即相應的結果。
輸入輸出樣例
樣例輸入
435 754
樣例輸出
199
思路:我們可以編寫一個求反置數的函式res,然後再使用字串流將數字型別轉為字串型別再進行一次處理得到所有反置數。
Code:
include <iostream>
#include <sstream>
#include <string>
using namespace std;
int res(string n)
{
int sum=0;
for(int i=n.size()-1;i>=0;i--)
{
sum=sum*10+n[i]-'0';
}
return sum;
}
int main()
{
string num1,num2;
cin>>num1>>num2;
//cout<<"num1:"<<res(num1)<<endl;
// cout<<"num2:"<<res(num2)<<endl;
stringstream str;
str<<res(num1)+res(num2);
cout<<res(str.str())<<endl;
return 0;
}