ZSTUOJ平台刷题①:Problem 3531.--逆序数

3531: 逆序数

Time Limit: 1 Sec  Memory Limit: 64 MB
Submit: 3831  Solved: 2044

Description

输入一个任意整数(int型),输出其位数并逆序输出该数。

Input

输入一个任意整数(int型)

Output

输出其位数及逆序数

Sample Input

12345
-123
100

Sample Output

54321 5
-321 3
1  3

一般解答(不用考虑0处于非零数字之间位置想要保留的情况):
代码如下:
#include<bits/stdc++.h>
using namespace std;

int main(){
    int n;
    while(cin>>n){
        int sum=0;int b=n,c=n;
        while(n){
            int a=n%10;
            if(((n==b&&n<0)||b>0)&&a!=0) cout<<a;
            else if(b<0) cout<<-a;
            sum++; 
            n/=10;
        }
        cout<<" "<<sum<<endl;
    }
    
    return 0;
} 
优化解答(可以解决0处于非零数字之间的情况,将其保留下来):
#include<bits/stdc++.h>
using namespace std;

int main(){
    int n;
    while(cin>>n){
        int sum=-1;int b=n,c=n;
        while(n){
            int a=n%10;
            c/=10;
            while(!a&&c%10==0){
                a=n%10;
                n/=10;
                sum++;
            }
            if(((n==b&&n<0)||b>0)) cout<<a;
            else if(b<0) cout<<-a;
            if(n==b) sum+=2;
            else sum++;
            n/=10;
        }
        cout<<" "<<sum<<endl;
    }
    
    return 0;
} 

 

posted @ 2021-05-16 18:09  Ta7KiXuoul  阅读(66)  评论(0编辑  收藏  举报