反序数–当作练习string转int/double,调库函数sscanf(a.c_str(), “%d”, &x);
题目
反序数指整数各位取反之后的数。如321 的反序是 123,147 的反序是 741.现输入n组 a,b(a、b 均大于0且小于 10000),如果 a、b 反转的和等于和的反转,则输出 a、b。例如 a=123,b=456,那么 a+b 的和为 123+456=579,a与b的反转数的和为 321+654=975,579 的反转数是 975,满足题意故输出。
输入、输出
输入第一行为n 代表输入的组数,下面几行代表几对数组。要求可以输入多组数据。符合要求则输出对应数组,否则输出 none。
。
#include <iostream>
#include <cstring>
#include <algorithm>
#include <stdlib.h>
using namespace std;
const int N = 1e4+10;
bool is_fanzhuan(int x , int y)
{
string s1 , s2 ;
s1 = to_string(x);
s2 = to_string(y);
reverse(s1.begin() , s1.end());
if (s1 == s2) return true;
else return false;
}
int main()
{
int n ;
cin >> n ;
while (n --)
{
string a , b , aa , bb;
cin >> a >> b ;
aa = a ;
bb = b ;
reverse(a.begin() , a.end());
reverse(b.begin() , b.end());
int x , y , xx , yy ;
//string转int
sscanf(a.c_str(), "%d", &x);
sscanf(b.c_str(), "%d", &y);
sscanf(aa.c_str(), "%d", &xx);
sscanf(bb.c_str(), "%d", &yy);
if (is_fanzhuan(x + y , xx + yy)) printf("%d %d\n" , xx , yy);
else puts("none");
}
return 0;
}
输入
3
123 456
789 987
147 369
输出
123 456
none
none