- 在线时间
- 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>
$ n8 g k2 Y: n2 L' @" N( T4 o#include<fstream>1 y( f( F4 c& I( t l
#include"string.h"" n& t$ E8 x9 M+ T
//#include"time.h"$ B. n& s. O. U& m+ d
using namespace std;
( z7 Y; o5 \; cifstream in("input.txt");
2 e7 y, ~# A- xofstream out("output.txt"); 8 l, J) n3 ?( a
class String + u% ~: a8 X1 H1 V( o8 n3 ^0 s+ Y
{8 V z1 a. k" b' l
public:3 X/ X) b. B# ^8 S8 @3 L* ~0 u- R
String(char *s="");
0 b+ {6 D. K6 p4 g | String(const String& s);+ e5 Z( ^$ X; c- g( b' d; @
~String() {delete[] str; delete[] pre;}
$ k$ d, `! a; t( {0 w% ] String& operator=(const String& s);3 s6 z; \$ v4 i+ p- B, ?. @0 e; B
int length()const {return size-1;}
6 O7 p9 A) a2 B# | int get();; F9 _6 h0 D3 Y& l; e2 g
String& change(int *p,int n);6 D( D" ^0 p: U n9 x2 f4 v
void get(int *p);
/ Y' V6 M# H7 J9 H void display(){out<<str<<endl;}6 d# F ?. U5 v; V
private:
- Q, Z3 E4 m$ G$ ?/ B char *str;
/ b/ G3 c; B }5 l int *pre;
6 r$ F' z4 H" _- j! A2 E3 v int size;
6 P5 L- F: E: ~3 j9 z- ^) K3 N& C};</P># _; O/ t# e! ~4 Y
< >String::String(char *s)
4 ?) n o1 s! H1 d3 r+ J* i{
$ ]6 Q& U, U ]8 U& C/ G& G! P size=strlen(s)+1;
' h4 \1 d5 m. @9 R Q str=new char[size];
" K* I# k( Y/ h if(str==0) throw "error";
0 b4 V7 n2 n3 [: Z3 S% d strcpy(str,s);" T2 e: N% d$ ]9 R; ?
pre=new int[size];
+ Z. l. j8 |2 T+ e" y e if(pre==0) throw "error";
7 @4 C( w9 b9 i* O}</P>
+ z$ j, f, [- R" I- {3 [1 w% C) t+ x< >String::String(const String&s)& A3 s* b; x' ^4 l( O; l5 M2 Z
{
6 Z1 y/ T2 h; T- M# t2 p size=s.size;3 E, L0 ?$ Z {2 a, a
str=new char[size];2 L# d- W, ]1 k" y, L9 p
if(str==0) throw "error";. p9 p; I9 }8 T! C7 ]
strcpy(str,s.str);
) T+ d1 J* V& M1 y& r0 ~0 Q. o. ` pre=new int[size];
6 H$ l9 d+ j7 ~/ ]- L- @ if(pre==0) throw "error";
9 X! @9 M b$ z3 R7 M' r9 L}</P>( T0 s1 F% ^7 K8 i* j& ~
< >String& String: perator=(const String& s)
2 R/ K8 z( N: z- F j* d/ L{
& f- u. f: F" v" a: I, W" [ if(s.size!=size), \/ \+ E" H$ S: G% P4 K5 V
{' Z" V3 R! r& w
delete[] str;
9 k+ @% N# \; J8 b- V str=new char[s.size];
5 V; g/ y, L2 ^" c3 ^ if(str==0)
* B/ `! l; Q% H; v throw "error";8 I) u( S8 H3 ]0 s% ~( I) W
size=s.size;
# F: U# I7 R4 T: M, g6 U" q8 W7 W/ v }2 L! g4 V0 K. d/ B7 E0 O
strcpy(str,s.str);1 I, v9 _+ r5 U2 b
return *this;
, o# d4 X/ D5 \4 g1 |2 N}</P> v( b2 I) U/ U6 s
< >String& String::change(int *p,int n)//将整型数组改成字符串3 M3 ^; P! C# G& k0 c
{# s# M# y, n O9 e0 s
int i;
+ ~ W2 \" Y$ O0 ?& }( S delete[] str;
$ j- [9 w* E0 ~+ E1 L str=new char[n+1];, M& Z+ Y) q/ u) x8 n
for(i=0;i<n;i++)7 H$ J1 t: i% v$ d( K
if(p>=0&&p<=9)9 @5 ]: N; t- E. p, C
str=p+48;
# ~8 _4 B: L8 h2 U7 d" Z- }$ [ else
1 N1 I/ p; J7 F7 _+ U) _ switch(p)
( _. }) U8 W3 H3 K2 i: q3 \( h3 \ {
; _/ _% S' J r: Q. q, F) m6 K case 10: str='A'; break;% v1 x& f) Q7 Y( L# P2 C6 q
case 11: str='B'; break;0 I O- x% P! O6 y: C. u- e! K
case 12: str='C'; break; A( q6 t+ _) O
case 13: str='D'; break;. ^3 ~- L" i7 T0 S% @
case 14: str='E'; break;+ o$ A: j5 ?7 `9 s
case 15: str='F'; break;
8 a3 t9 v5 m8 ^0 I* n }
# k2 U( I% V3 K1 I. B str[n]='\0';6 `( D+ t+ H, X3 _
return *this;
: P/ P. J2 ^4 e% s}
6 [9 {$ G9 l+ i6 E) k3 Nint String::get()//输入一个字符串1 Z% j- P6 e& Q8 I
{+ B0 ]# e2 T. Q, m
char tmp[40000];% g2 Y- z7 T( S% B7 p
in>>tmp;
5 ?( ^+ B& k3 B% Z; ~" a* S) F3 e- \ delete[] str;
2 G% i" [4 T8 Q5 i% G/ O& U8 k: } size=strlen(tmp)+1;
. D8 H1 H) V2 L# F str=new char[size];2 B# s; T# x. V" \5 T7 c2 t2 C; F; y% M
if(str==0)
; Y: V$ n" n% y2 Y: s throw "error";
! ]; Q0 S i! {' s( H strcpy(str,tmp);' |9 e# ^8 g4 J8 s* t0 R$ G3 u
return size-1;" {- j2 ^" W% `+ z
}</P>
, B( K( _9 c# `< >void String::get(int *p)//将字符串改成整型数组/ p( i6 d( N: J: e
{
# n9 }2 _$ n+ J* V' P int i,j;
* x0 L4 y r& N& c; q for(i=0,j=size-2;j>=0;i++,j--)
t M+ U: t2 g$ Q# f if(str[j]>='0'&&str[j]<='9')7 _( b) T; x8 R) v& m- [
p=str[j]-48; c" g7 E; N2 g: a; y6 {6 @ {
else" n/ o& {! Z+ t$ `0 D) R
{
# v! c3 P* [4 z switch(str[j])
3 t& S. o. V) [7 z- u2 | { H( ~$ o# c/ @ m% ^7 b3 O
case 'A': p=10; break;3 |- q: `9 t% r$ h A( h
case 'B': p=11; break;, R* ~5 x7 D$ j" _6 l: g$ Z
case 'C': p=12; break;9 F9 N# P: g' q& \% E
case 'D': p=13; break;4 U. w6 F7 }9 y- r9 H
case 'E': p=14; break;
) s. G1 G: E+ i. _- \ case 'F': p=15; break;- k1 v" @5 e Q s
}
7 J' o2 P; ?+ a% e+ z9 t3 j4 U }
$ [8 U/ b, O3 k4 c}</P>
" R. v% ?5 D( M< >void add(int *p,int &m,int *c,int k)//将一个数同其倒置数相加
* e# [! g" F( I4 [2 i{: n8 b6 U, Y! v
int i,j,a=0;
. b, q$ `. L- B$ W for(j=m-1,i=0;j>=0 && i<m;j--,i++)) R4 V+ V. A2 y7 W! C( K* A4 N
{. G1 g5 r: q3 J4 H
c=p+p[j]+a;2 R0 Z0 v3 e% r# m
a=0;8 t8 }- Q$ r1 w
if(c>=k), A5 Z6 \5 q9 t" I! h9 B
{; r0 q5 e# `- S. }
a=c/k;4 z& n4 w& v& o8 f1 S( D Q3 O
c=c%k;
# m! K9 `7 l1 i* D' w }
1 e" |' T3 i1 \+ ]& } } 9 T& P: r( L& l+ X1 P4 f2 U' j
if(a!=0)7 j1 X$ y6 H, Q. K2 R9 `8 W. z$ H
{
2 x. M" L$ a% N6 G! t- w c=a;
5 z7 C& o3 a) z: o m++;
4 F5 P1 s2 S& X- x }5 p7 L' Y |% V! m! Y
}</P>: g5 d1 t7 A$ | e
< >bool match(int *a,int n)//判断是否为回文数
% f3 K3 q1 t3 C4 W& j{
5 _4 P* k0 _+ x+ D int i,j,h=0;: E3 i) O% s5 a$ H R" I: D h0 X% @6 c
for(i=0,j=n-1;i<=n/2 && j>=n/2;i++,j--)
" e5 m5 X2 n; |, `. U8 g {
" I7 K" @* U8 J1 }- C3 [ if(a==a[j]). s1 d- U: S9 h
continue; t5 ]5 K2 z6 k: ?6 [; F7 e
h=1;$ V+ t( t* @8 d# j
break;6 `$ L: ~# `, S; Z( g0 m8 U5 K
}
* P; t9 f6 O d; @( T! y if(h==0)
7 \0 O2 B8 |2 Y; j, W$ P return true;
" L- [) A# h6 N& l# m% ~3 n/ Q else
F# V1 \# x( C# C/ S6 W* H) { return false;
$ ~1 j0 l' q9 L0 p5 r& {}* W1 m) M+ Q J* b+ J
//clock_t start,finish;
$ P0 C" g, v- I ?( H* Q- xint main()( a- U& G1 ^- W& G
{//start=clock();9 O! S4 }' y: y! ]/ L+ A) H1 B3 a
if(in.fail())7 {4 N! g7 z& e7 B! c% R2 ~
{
% }9 ]5 m$ M' y1 J$ T& `* o5 y cout<<"the input.txt is not exist!";
1 W4 e) u r0 i- W: i exit(1);! m# u+ H3 c$ |
}/ `7 M( j5 i/ y- |
String s,s1;
5 F. U( F D ^( G4 U5 c0 r+ ~: a int n,g,k,*a,*c,m,h=0;/ K/ X* |$ [% g( I+ [6 f5 ?) v
in>>k>>g; " K0 ?9 }# M+ u/ W. Z3 _ e$ [
s.get();6 g8 r" |4 N2 ^
9 z& s# ^6 I0 M# H7 f8 r b- O n=s.length();
. ^0 `& |; c8 m m=n+g+1;
4 c, U/ c2 C8 r% ?& F a=new int[m];
, P, B0 D, a% I% E! i8 } c=new int[m];* c( {2 |0 U3 M0 b
s.get(a);
4 Y( S1 O; ~, ^ ?$ p5 M if(match(a,n))
7 b9 |/ y8 h+ o" M {2 @+ e- r2 l# M' g0 E
out<<0<<endl;
2 |2 W( P& K5 ^+ u( b" y s.display();
# f, Y0 {" C* ?0 e return 1;, K" L: z0 w |0 P# h7 c
}( M1 t; |2 T3 u/ g8 r5 g
do1 }0 w& k! W3 `$ t/ j& ^: q
{
' h) I. u. t2 t* o+ L; ? k4 v if(h%2==0)
' }$ O% D2 W( O+ s$ i9 N3 n3 g add(a,n,c,k);+ e5 Z$ f) j+ J& X; N; i/ ]+ U3 M
else
, @/ Q- g1 K. } n, I3 G. d add(c,n,a,k);% W0 l. E; t6 Q) z% N3 w
h++;4 @7 G! O9 J' P# F
if(h>g)
3 Z: b% D8 l2 { break;
! X/ p! J4 ^) j }
, r9 s3 s. N5 v, }2 F2 O while(!match(a,n)&&!match(c,n));8 t1 F2 s# } J! M$ s/ ~
if(h>g)0 H% O! l0 {+ s3 i5 f4 R6 A4 J
out<<"No Solution!"<<endl;
' {2 Q8 @# A+ H6 [ else4 d0 N/ _$ W6 ~
{2 ~% R3 T4 F" c0 J1 O
out<<h<<endl;
5 I8 _4 U4 P% l- T if(h%2==0)# Y0 e( R6 h" _% y
s1.change(a,n);$ X' m( I4 r2 c" ]
else
8 j/ E: H3 `* b7 |: Q0 T7 o3 Y8 B) y s1.change(c,n);
" ^4 X4 Q1 L/ p$ x- ~ s1.display();, S6 r- Q9 J5 v. _: C6 R6 |, h# D
}+ `) \9 `- I: ` N0 m
delete[] a;
{. P3 R- V/ i3 y delete[] c;
/ t" V3 e, w; |- t// finish=clock();9 s D. i* w5 l1 _- I
// cout<<finish-start<<endl;) p! G, ^' E8 n; I; Y8 s" Z
return 1;
% A9 @/ Z5 ~% V7 |}</P> |
zan
|