P1688 数字反转
时间: 1000ms / 空间: 131072KiB / Java类名: Main
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。
输入文件名为 reverse.in。 输入共 1 行,一个整数N。
输出文件名为 reverse.out。 输出共 1 行,一个整数,表示反转后的新数。
【输入样例 1】
123
【输入样例 2】
-380
【输出样例 1】
321
【输出样例 2】
-83
【数据范围】
-1,000,000,000 ≤ N≤ 1,000,000,000。
思路1:
#include<iostream>
#include<cstdio>
using namespace std;
int main() {
freopen("reverse.in","r",stdin); freopen("reverse.out","w",stdout);
int x,y=0;
cin>>x;
while(x!=0) {
y=y*10+x%10;
x/=10;
}
cout<<y;
return 0;
}
思路2:
#include<iostream>
#include<cstdio>
#include<string>
char a[12];
using namespace std;
int main() {
freopen("reverse.in","r",stdin);freopen("reverse.out","w",stdout);
cin>>a;
int p1=0,p2=0;
if(a[0]=='-') {cout<<"-"; p1=1; }
for(int i=0;i<12;i++){
if(a[i]==0) {
p2=i-1;break;
}
}
while(a[p2]=='0'){
p2--;
}
for(int i=p2;i>=p1;i--){
cout<<a[i];
}
return 0;
}
#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
using namespace std;
int main() {
//freopen("reverse.in","r",stdin);freopen("reverse.out","w",stdout);
string a;
cin>>a;
int p1=0,p2=a.size()-1;
if(a[0]=='-') {p1=1; }
while(a[p2]=='0'){ p2--;}
reverse(a.begin()+p1,a.begin()+p2+1);
for(int i=0;i<=p2;i++){
cout<<a[i];
}
string ans;
// ans=a.substr(0,p2+1);
// cout<<ans;
return 0;
}