shu_1180 回文數(一)
阿新 • • 發佈:2019-05-15
intra ali span sci ext stdin rgb bits 技術
版權聲明:本文為博主原創文章,未經博主同意不得轉載。 https://blog.csdn.net/naturelan44/article/details/37563425
cid=1079&pid=21" rel="nofollow">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;
}
shu_1180 回文數(一)