- 在线时间
- 0 小时
- 最后登录
- 2005-4-22
- 注册时间
- 2005-4-22
- 听众数
- 2
- 收听数
- 0
- 能力
- 0 分
- 体力
- 72 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 26
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 7
- 主题
- 2
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   22.11% 该用户从未签到
 |
< >#include<iostream>
5 N7 v& q) R; ^/ H6 T5 X#include<fstream>; C1 Z0 M5 k4 s- Y
#include"string.h"( D( n+ ^7 }, V$ p, {" {
//#include"time.h"
1 X9 X. e5 Y2 S* p vusing namespace std;
* T' G7 O9 }, `ifstream in("input.txt");
7 P+ B' Z# ?1 [ofstream out("output.txt"); - X( r& i# N- R
class String
- [0 @# y5 G: [& N{* q5 n. a; W8 A
public:
2 J' ?2 n: N* S/ ]# A& T$ K$ U$ C5 N String(char *s="");7 O6 \6 \* j0 _4 C
String(const String& s);6 Q* z7 C( Y: z+ V( |
~String() {delete[] str; delete[] pre;}" b9 O% _$ X' @9 v% B* v
String& operator=(const String& s);5 q1 A& D" |& r5 W4 Q& e1 ]
int length()const {return size-1;}2 m' A. y9 U: A% ]/ _$ H: b+ M( ]$ ^
int get();
/ |7 Z$ _0 x4 w* E) Q6 M String& change(int *p,int n);
$ {/ e$ I+ |2 \7 d9 T. k. ]5 Z/ f# S void get(int *p);+ l/ {7 W9 t1 f3 i
void display(){out<<str<<endl;}% K# M" E3 U* p6 J- ?
private:
7 Q& {: d* n8 |( R( X. E% Q2 d char *str;
0 \* e e# ?# Y# Y int *pre; x( m1 O1 w( b+ G+ t$ o3 U
int size;
* D1 D4 @& J+ O6 `};</P>% }; r% V8 h1 U" y! h/ w, y
< >String::String(char *s)
3 G9 j) F& ]% K' B{+ Z! r0 g9 q$ \- V5 s
size=strlen(s)+1; S% \1 O& x( [; w& X3 l Q2 o2 v
str=new char[size];
0 F9 ~5 Y$ ]0 O; a, C if(str==0) throw "error"; t- i* I+ h/ g5 l. D3 w. v
strcpy(str,s);
* L# Z4 e1 D" X, U5 i pre=new int[size];
8 d3 D# [6 t) o- |9 E if(pre==0) throw "error";7 C$ ^8 {& M8 E8 q; H
}</P>) L' ^' O/ t1 z: H% i
< >String::String(const String&s): n% X8 {8 K$ o. @! U( T9 `; P
{
s7 g9 h' K$ I6 f K/ p size=s.size;5 q0 ]9 v& d1 t" T# g# ~
str=new char[size];
' {& {/ @- ^1 g9 J) e. o+ | if(str==0) throw "error";
# D" m; N8 T; M, ]9 z strcpy(str,s.str);. [: ]) B7 i' t
pre=new int[size];5 j& ^, I7 f1 p2 Z, T0 ^
if(pre==0) throw "error";1 v) K0 e$ i/ U5 T
}</P>
' a X5 c% b `3 T b< >String& String: perator=(const String& s)
5 B, @6 V& z! p2 K& Y{
) Y$ a7 e7 b/ h9 i! k! m& I" g+ s if(s.size!=size)
U) F: a. o |* C' c- k" K {
* ~, r& Y6 d, g- p; P/ N! } delete[] str;
, c7 k' i' K$ Z$ Z0 f; ]2 } str=new char[s.size];5 E4 T6 n: o/ [6 q, y1 K+ r
if(str==0)4 a6 V1 m/ p3 {! }6 G, t3 g2 M
throw "error";& r+ ]5 z3 `/ @7 ^
size=s.size;
! ^% ~1 F1 j: u( P }
% Y: q3 }2 u4 v- l strcpy(str,s.str);
- t, F7 ]! f1 p7 _% ` return *this;
! L, _. q x5 e* B5 o/ r& c}</P>/ M8 o. w U0 A, ^! n) P" M
< >String& String::change(int *p,int n)//将整型数组改成字符串
6 d! Z6 z, A7 i/ E1 Q" q8 K( {* J{
' P( r! R1 I" p$ A2 y int i;. _/ i( M4 w" o# e6 C, B$ i: U
delete[] str;1 Q& p7 ]# D7 K. F- l
str=new char[n+1];4 D! d# z& ]# ]' \) p
for(i=0;i<n;i++): ^7 k$ X( m* h3 U7 Z( X( {
if(p>=0&&p<=9)
7 ~) J! `' d! a' h( m6 v8 ~ str=p+48;
2 _0 p. n+ F9 X! P7 E else
) s/ T2 N6 ~ k: h2 O% U* W; l7 q switch(p)4 ^! Y. p9 w9 y) F+ K; | H+ [( D
{- C( U$ g, H& c5 u% a7 |; U, B. a
case 10: str='A'; break;
. Q3 c8 W- a* Y case 11: str='B'; break;
* i; J% j9 h- l+ ~ case 12: str='C'; break;2 j% x+ V4 y3 q% M' k; K- ?" k
case 13: str='D'; break;8 D2 F) v1 \( k; e4 D8 F
case 14: str='E'; break;
& p7 u: Z m9 P+ E case 15: str='F'; break;
3 z% ~* h2 K# v* t3 Z! z }
. X8 k8 q* a5 y1 h str[n]='\0';
" x! L V; g, V$ U, q; B return *this;9 Q3 u4 ?# x1 z( I# `
}0 |" R/ x7 F c; i9 x) T9 e
int String::get()//输入一个字符串$ C" r0 a$ {0 _2 o
{
1 G9 m! e! B7 V/ Q% F7 W- {2 g char tmp[40000];
' G8 W, S5 z( ~% |$ B in>>tmp;& z! x8 O4 R: z% x0 ~
delete[] str;
, y9 g+ E7 z) Y, P size=strlen(tmp)+1;
# K0 j l% S1 t2 w& p0 `% T str=new char[size];! d3 h( i) g8 N3 S, j" z7 D8 s. x) a, @
if(str==0)
6 O: t3 i# a$ P throw "error";
% s5 o8 d; N. \7 M' b strcpy(str,tmp);
' g9 U, V+ R$ S# _1 a5 {+ C: s return size-1;( R, b( {% b3 K( a' w* Z7 y
}</P>* n2 b5 a' `. d) ?8 @5 E6 v4 q4 t
< >void String::get(int *p)//将字符串改成整型数组& V/ S9 h. q% G( ^+ X; T
{
' v" ?8 i& I7 C6 n9 X% m int i,j;; }3 j4 z( R4 h5 N
for(i=0,j=size-2;j>=0;i++,j--)
$ d2 f8 X5 }* K; E5 x. P4 _- J+ Q7 n if(str[j]>='0'&&str[j]<='9')& _5 N" h/ S: F
p=str[j]-48;
' ]+ R4 X# {8 R' l) m else k, P$ Q! W2 `! N4 o
{
6 w4 i! L: E# `, w2 b; A switch(str[j])
( Q) k# u! r H" P" G {* P# q; F% {% ]7 v' ?
case 'A': p=10; break;
9 {1 \9 ^4 ^0 J8 h case 'B': p=11; break;
' D6 @8 z6 Q9 V, R case 'C': p=12; break;
x% x8 c% }6 D! B1 M# _ case 'D': p=13; break;, N# q5 J2 K, ]( X3 R
case 'E': p=14; break;/ U$ J4 s% E: m0 A+ j
case 'F': p=15; break;
" d7 x- e/ [ O- b }5 x- j' G r5 D# {; J3 g
}
: R- P0 P9 l% ]! k8 e4 O}</P>3 L& B+ ?$ @4 A' [( \
< >void add(int *p,int &m,int *c,int k)//将一个数同其倒置数相加& A1 d5 E/ A0 _
{, \# B! g5 r& {9 |, {) @
int i,j,a=0;
9 r1 [; a v/ g4 X for(j=m-1,i=0;j>=0 && i<m;j--,i++)! L- y( E) M+ p* T
{
( M3 N9 I- r2 ~; c# D5 P c=p+p[j]+a;8 a/ j/ r3 ?# n/ M% S9 t
a=0;6 p* b- I k" ?5 X
if(c>=k)
2 n `# E/ p4 @8 r% Y2 e c5 @ {
* q! F7 i2 G- \ a=c/k;8 w& }/ [7 ?& n2 A& k- }
c=c%k;
, w$ S7 @0 i9 W( f }) n# f4 Z) Y z' B0 [- |( T
} , w, }& o4 U, k
if(a!=0)4 ~- H1 T' |! W: S1 v
{: A/ |% w6 K+ N4 r6 y
c=a;% L: d0 W5 |1 V* v, X# P
m++;
/ {' y. |/ O. G! y, l; C }
- \6 W# i; G# g}</P>: ~0 R C( m. K, X4 d: Y& [
< >bool match(int *a,int n)//判断是否为回文数) I7 e# r1 X" ` @4 C& Z
{
. P$ }* j2 v# U. @ int i,j,h=0;4 l7 |" l! m4 V5 G* j7 J: m( [ [
for(i=0,j=n-1;i<=n/2 && j>=n/2;i++,j--)7 v- b) x$ P# y2 q" `( r
{+ z6 y/ f v6 p8 H0 [0 {1 |
if(a==a[j]): k. H3 Y H5 L/ h/ O% S
continue;
( H6 C' f+ j& @" V h=1;& r, L2 g; z; ~+ U: ~
break;- [# A3 w' d8 Z l. |2 Q
}
4 r& y/ l' V, q u/ E if(h==0)
$ h H- s, h3 {) j! @ return true;- J2 I. |+ L. {2 a2 K
else 4 i! O, Y" b$ M; Y
return false;0 i0 Y: N' A2 a* _' H
}
% R5 m3 R8 | L+ Y5 ~- u//clock_t start,finish;9 Z- Q' u$ X' I7 B4 J
int main()% t+ ]4 D2 T2 O' Y6 G$ s
{//start=clock();
, a/ R |9 t+ G5 X& q+ @- K( F% h if(in.fail())
3 k% D" L$ ]4 M4 p {' \; h2 G! J& ?
cout<<"the input.txt is not exist!";
7 x6 Y6 l N! n M exit(1);' f1 b) e4 g6 e
}
. i4 e! C0 Y+ t, g( E) W* e String s,s1;& a: w. b2 u% b4 b% a; J7 r
int n,g,k,*a,*c,m,h=0;
# j) I5 W8 y4 M9 R in>>k>>g;
' L) a5 E1 Y$ Y( w+ p9 D8 z, Q- L" T s.get();
0 b$ \( ?5 M9 e! G. h6 o7 i x
3 a) A0 f7 X* j2 k$ Z n=s.length();; O3 F0 }+ r0 S! i9 H! P8 K
m=n+g+1;
5 g5 x n$ f2 q& D3 w# K$ F, G8 b a=new int[m];2 l" k# S) v2 D
c=new int[m];
7 W7 A" m! d, W+ a0 F: A/ h/ c s.get(a);; w6 A: {8 L5 }
if(match(a,n))
# ^9 |# b0 p8 D6 R; Z0 K {
" F; _' M4 C% L! Z" c out<<0<<endl;
/ g" y, q& q2 ]: j) x) ?- W+ t s.display();
" ]1 p+ t( {/ I) E: g/ V% \ return 1;
3 H% u& B/ u. a% ] j1 A1 S7 M }5 |* ^+ k5 K% l' `( C! z( i
do% V; b, J' D$ j8 g' n% z( J' }
{! E. u% O( ^+ ^) w% \4 M
if(h%2==0)
" h# M4 @1 D" w n' e7 c add(a,n,c,k);* M6 o' ?, V! U- I6 n0 Y
else/ u' r% ^# m2 ]5 D \
add(c,n,a,k);
# y8 ?% p% X3 P D2 c h++;
3 I7 v9 U* g# S! v1 R if(h>g)- L& o6 Z8 @. m# n* u9 G- ? T
break;
$ w# ]( ?% j, ~1 V2 N+ g }" \( i* a8 n! o5 u& s* x
while(!match(a,n)&&!match(c,n));
$ }; X6 N, M4 X' _ if(h>g)
0 S8 M+ w8 j {2 T% I+ A) ~# ~6 {" G out<<"No Solution!"<<endl;* ?/ R# I3 j8 ^' ~. s3 Z
else
) O' O: l9 S4 Q4 Y8 E {
! T R+ s: g" [ out<<h<<endl;
1 V! U/ j0 \# z if(h%2==0)
" u2 B; [. }* W Q s1.change(a,n);5 a* m8 a! o& F7 P5 f+ x& u/ O" j4 K
else" p/ J) L0 m* g" n
s1.change(c,n);& w9 _2 D1 ~& ]& N
s1.display();" F ^+ K, q+ d0 c+ x, L
}
) Q ]; c2 d# }& ]: t) i delete[] a;
- `3 [- O2 O a, i delete[] c;
: m* x# q/ W- }; d9 C$ r// finish=clock();
: q6 [) T2 f# ^) Y// cout<<finish-start<<endl; X. @( |: b% ]0 J$ E
return 1;
; _/ H7 f5 w$ ?! s* m- Y+ O}</P> |
zan
|