首页 > 代码库 > shu_1180 回文数(一)

shu_1180 回文数(一)

http://202.121.199.212/JudgeOnline/problem.php?cid=1079&pid=21


分析: 回文串判断,字符串处理

             1. atoi 函数(ascii tointeger 将字符串转换成整型数)

                 头文件: #include <stdlib.h>

                int atoi(const char *nptr);

                 由于程序中使用string类,所以应该用 str.c_str() 将string转为c语言下的字符串数组。

             2. itoa函数(与atoi功能相反)

                 char*itoa(intvalue,char*string,intradix); (与atoi用法区别)

            3. stringstream

                头文件: #include <sstream>

               

input:

3
1 2 3
20 17 23 54 77 60
111 222 333 444 555 666 777 888 999


#include <iostream>
#include <stdio.h>
#include <string>
#include <sstream>
using namespace std;
#define MAXN 60

int main()
{
    freopen("in.txt","r",stdin);

    string s;
    stringstream ss;
    int t;
    int n,a[MAXN];
    cin>>t;
    getchar();  //读取换行
    while(t--){
        getline(cin,s);
        ss.clear();
        ss.str(s); //ss<<s;
        n=0;
        while(1){
            ss>>a[n++];
            if(ss.fail()) break;
        }
        for(int i=0;i<n-1;i++) cout<<a[i]<<" "; //n比数字多1个
        cout<<endl;
    }
    return 0;
}
        

output:     


   输出到double一样;         

  有关string的用法在string类说明中再行分析。

             

代码:

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <string>
#include <sstream>
#include <stdlib.h>
#include <algorithm>
using namespace std;
#define MAXN 10000
 
int cnt;
string s[MAXN];
 
bool palindrome(string e)
{
    for(int i=0,j=e.length()-1;i<e.length();i++,j--){
        if(e[i]!=e[j]) return false;
    }
    return true;
}
 
void deal(string e)
{
    int a;
    string x=e;
    while(1){
        cnt++;
        if(cnt>8) {cnt=0;break;}
        a=atoi(x.c_str());
        reverse(x.begin(),x.end());
        a +=atoi(x.c_str());  //123+321
        stringstream ss;
        ss<<a; ss>>x;
        if(palindrome(x)) {
            break;
        }
    }
    printf("%d\n",cnt);
}
 
int main()
{
    int n;
    string str;
    scanf("%d",&n);
    while(n--){
        cin>>str;
        cnt=0;
        deal(str);
    }
    return 0;
}