首页 > 代码库 > hdu 1266 Reverse Number

hdu 1266 Reverse Number

Reverse Number

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 5052    Accepted Submission(s): 2352


Problem Description
Welcome to 2006‘4 computer college programming contest!

Specially, I give my best regards to all freshmen! You are the future of HDU ACM! And now, I must tell you that ACM problems are always not so easy, but, except this one... Ha-Ha!

Give you an integer; your task is to output its reverse number. Here, reverse number is defined as follows:
1. The reverse number of a positive integer ending without 0 is general reverse, for example, reverse (12) = 21;
2. The reverse number of a negative integer is negative, for example, reverse (-12) = -21;
3. The reverse number of an integer ending with 0 is described as example, reverse (1200) = 2100.
 

 

Input
Input file contains multiple test cases. There is a positive integer n (n<100) in the first line, which means the number of test cases, and then n 32-bit integers follow.
 

 

Output
For each test case, you should output its reverse number, one case per line.
 

 

Sample Input
3
12
-12
1200
 

 

Sample Output
21
-21
2100

 

#include<stdio.h>#include<string.h>#define MAXN 10000char a[MAXN];     //定义字符数组 int main(){    int t, n, i, len;    int k;    scanf("%d", &t);       while( t-- )    {        scanf("%s", &a);       //输入字符串                             len = strlen(a);            for(k = len - 1; k >= 0; k--)        {            if(a[k] != 0)       //筛选,非零位部分a[k]                   break;        }                     if(a[0] == -)        {            printf("-");                        for(i = k; i >=1; i--) // 将k 相对应地 保存  在i中                     printf("%c", a[i]);//反转                                 for(i = k + 1; i < len; i++)                printf("0");        }             else                {            for(i = k; i >=0; i--)                printf("%c", a[i]);            for(i = k + 1; i < len; i++)                printf("0");        }                printf("\n");    }    return 0;}
View Code

 

 

#include<stdio.h>
#include<string.h>
#define MAXN 10000

char a[MAXN];     //定义字符数组
int main()
{
    int t, n, i, len;
    int k;
    scanf("%d", &t);  
    while( t-- )
    {
        scanf("%s", &a);       //输入字符串                   
         len = strlen(a);
        
   for(k = len - 1; k >= 0; k--)
        {
            if(a[k] != ‘0‘)       //筛选,非零位部分a[k]  
                break;
        }
       
       
     if(a[0] == ‘-‘)
        {
            printf("-");
           
            for(i = k; i >=1; i--) // 将k 相对应地 保存  在i中
                    printf("%c", a[i]);//反转
                   
            for(i = k + 1; i < len; i++)
                printf("0");
        }
       
     else
       
        {
            for(i = k; i >=0; i--)
                printf("%c", a[i]);
            for(i = k + 1; i < len; i++)
                printf("0");
        }
       
        printf("\n");
    }
    return 0;
}

 

 

 

#include<iostream>#include<string>using namespace std;int main(){    int n;    cin>>n;    string s;    while(n--)    {        cin>>s;        int begin = 0,end,i,j;        if(s[0] == -)begin = 1;       while(s[begin] == 0)begin++;        end = s.size()-1;        while(s[end] == 0)end--;        reverse(s.begin()+begin,s.begin()+end+1);        cout<<s<<endl;    }    return 0;}
View Code

 

 

#include<iostream>
#include<string>
using namespace std;
int main()
{
    int n;
    cin>>n;
    string s;
    while(n--)
    {
        cin>>s;
        int begin = 0,end,i,j;
        if(s[0] == ‘-‘)begin = 1;
       while(s[begin] == ‘0‘)begin++;
        end = s.size()-1;
        while(s[end] == ‘0‘)end--;
        reverse(s.begin()+begin,s.begin()+end+1);
        cout<<s<<endl;
    }
    return 0;
}