網頁

2013年8月25日 星期日

c015. Reverse and Add、UVA 10018

#include<iostream>
#include<string>
#include<sstream>
using namespace std ;

size_t reverseint(size_t num){
    size_t inrev=0 ;
    while(num>0){
        inrev = inrev*10+num%10 ;
        num /= 10 ;
    }
    return inrev ;
}

size_t reva(size_t num){
    return num+reverseint(num) ;
}

int check_pd(unsigned int num){
    stringstream ss ;
    string str ;
    ss << num ;
    ss >> str ;
    for(int i=0 ; i<str.length()>>1 ; ++i)
        if(str[i]!=str[str.length()-i-1])
            return 0 ;
    return 1 ;
}

int main(){
    int t,  counter;
    size_t num ;
    cin >> t ;
    while(t--){
        counter = 0 ;
        cin >> num ;
        do{
            num = reva(num) ;
            counter++ ;
        }while(!check_pd(num)) ;
        cout << counter << " " << num << endl ;
    }
    return 0 ;
}

沒有留言:

張貼留言