描述
设N是一个四位数,它的9倍恰好是其反序数(例如:1234的反序数是4321)
求N的值
输入描述:
程序无任何输入数据。
输出描述:
输出题目要求的四位数,如果结果有多组,则每组结果之间以回车隔开。
法一:
Reverse函数用来求反序数,对从1000~9999的所有整数中不断枚举找到满足题目要求的数据
#include<iostream>
#include<algorithm>
using namespace std;
int Reverse(int x){
int revx=0;
while(x!=0){
revx*=10;
revx+=x%10;
x/=10;
}
return revx;
}
int main(){
for(int i=1000;i<=9999;++i){
if(i*9== Reverse(i)){
cout<<i<<endl;
}
}
return 0;
}
得到结果是1089
法二:
先将4位数N转换成字符串, 利用字符串的reverse函数将字符串反序,再将字符串转换成整数输出
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main(){
for(int i=1000;i<=9999;i++){
string s= to_string(i);
reverse(s.begin(),s.end());
int j=stoi(s);//string->int
if(i*9==j){
cout<<i<<endl;
}
}
return 0;
}
同样可得到结果1089
用这个方法可以轻松解决下面的问题
描述
输入任意4个字符(如:abcd), 并按反序输出(如:dcba)
输入描述:
题目可能包含多组用例,每组用例占一行,包含4个任意的字符。
输出描述:
对于每组输入,请输出一行反序后的字符串。 具体可见样例。
示例1
输入:
Upin cvYj WJpw cXOA
输出:
nipU jYvc wpJW AOXc
#include <iostream>
#include<algorithm>
using namespace std;
int main(){
string s;
while(cin>>s){
reverse(s.begin(),s.end());
cout<<s<<endl;
}
return 0;
}
题目:数字反转
描述
12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转。
输入描述:
每行两个正整数a和b(0<a,b<=10000)。
输出描述:
如果满足题目的要求输出a+b的值,否则输出NO。
示例1
输入:
12 34 99 1
输出:
46 NO
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main(){
int a,b;
while(cin>>a>>b){
string s1= to_string(a);//12
string s2= to_string(b);//34
reverse(s1.begin(),s1.end());
reverse(s2.begin(),s2.end());
int c= stoi(s1);//21
int d= stoi(s2);//43
int sum1=a+b;//46
int sum2=c+d;//64
string s3= to_string(sum2);
reverse(s3.begin(),s3.end());
int sum= stoi(s3);//46
if(sum==sum1){
cout<<sum1<<endl;
}else{
cout<<"NO"<<endl;
}
}
return 0;
}