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 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;
}
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;
}


 

 

posted @ 2014-08-01 17:28  2014acm  阅读(148)  评论(0编辑  收藏  举报