- 在线时间
- 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>1 p- Y" Z# k/ U1 V2 ~( q
#include<fstream>
1 }0 G; Z7 K4 C+ F7 N" J' Y. Z ~#include"string.h"9 V' x) ]6 n% t* i" v4 l* o, I
//#include"time.h"1 R1 g+ J/ T, Y8 r
using namespace std;$ v# k2 {: ]- o# p# ?
ifstream in("input.txt");4 \- Y8 Z; C" a& ]
ofstream out("output.txt"); ( @$ D4 N. V9 Y1 s. {
class String , a* Z8 X- g) T
{* X0 t- q' Z- Q/ v9 t5 d
public:3 U5 E, I! X( i3 s
String(char *s="");
3 k9 B2 l; C& O3 {3 z String(const String& s);
* z( M( F& g, k% j( }, B4 s ~String() {delete[] str; delete[] pre;}$ t1 u6 h' K( |1 o7 E
String& operator=(const String& s);. {0 \, e) t6 a" y6 C
int length()const {return size-1;}% J3 [, G! T7 q# N9 c; R# K
int get();7 z% k2 _! n( J0 X. o2 \. u
String& change(int *p,int n);
, P8 I' e+ h1 B void get(int *p);# p7 @$ ^) L$ Z& ]
void display(){out<<str<<endl;}
; Y/ h7 A( Y5 c& U6 V, o; Aprivate:
: J+ R% m+ G1 K8 _* s4 C4 k4 k char *str;
/ J2 u R/ I+ o4 W3 C& P: w) b int *pre;
; B& z$ k; I' w- ^6 z# w int size;
, h: L( U( P" C2 o7 W5 t1 E};</P>
( D( h& T3 e/ D) }0 W< >String::String(char *s)" [6 f. e* V5 B* r
{
0 t( U7 d# U ^, `8 ~# v size=strlen(s)+1;3 v7 p8 b$ l3 m6 A; [3 i- k3 b) i
str=new char[size];" @) T1 P) v8 @& ~1 R. E
if(str==0) throw "error";* T+ I. D, q) `
strcpy(str,s);2 j' \9 _1 V, B
pre=new int[size];
% W. a" ^' l; J- K F2 v" w' A2 L if(pre==0) throw "error"; S: j$ J2 o8 @4 a
}</P>
5 T4 C( F% ~* r/ ?' x0 S< >String::String(const String&s)
1 v& M I7 x' I; I. @& \{6 L1 @0 M" `) z- E3 a
size=s.size;
. {/ }* G: p# v# |4 E: I+ G str=new char[size];5 ?7 U* @" O- }1 z, R; ?2 i) k/ T
if(str==0) throw "error";0 | {9 ]$ {# u* d6 F1 d/ P
strcpy(str,s.str);
' Y5 j& B7 c6 L1 v pre=new int[size];9 K( [# B' r8 `) m; ]
if(pre==0) throw "error";
* Q+ H2 v' M+ Y* X- O2 I}</P>
9 L; I+ \! g; C" \- T: p( x< >String& String: perator=(const String& s)
. @4 W3 k0 H7 @. |' ^( t4 J A h{9 Z3 z K1 ]* @0 y+ Q+ h
if(s.size!=size)
2 H8 j) G& |6 M3 y% `2 Y {
& i9 z/ L8 r# B. F8 u5 G; E. J delete[] str;
; C; W) Q2 ~9 G5 I, s! ^+ z str=new char[s.size];7 L g* H- c4 A( p z
if(str==0)( g3 N% b" W7 I K
throw "error";
E: i J, R# S size=s.size;! F3 [1 H; V9 k
}
& z7 x8 b' B% g. G3 Z8 Y strcpy(str,s.str);
5 N! t6 b% ^' V+ Z0 w% E! G return *this;
4 t7 K, n4 b3 x2 U" ~}</P>+ Y) w1 J: }3 V, O, i3 C
< >String& String::change(int *p,int n)//将整型数组改成字符串& m& o8 m( X& N/ d( l+ p* r5 R( m
{
4 f' w1 p2 { _/ N int i;
8 D- k2 f6 G- V' U delete[] str;$ V" w( t" H8 e: }/ K; k0 s) G
str=new char[n+1];
: q% E- C# J! m1 |+ [. U for(i=0;i<n;i++)
: d& ?. e% e1 O6 r# R if(p>=0&&p<=9)' d! t9 d7 X! o: A" @ |; U- [
str=p+48;6 Y W0 Y0 }" N! v0 ]
else
5 k4 p: V7 C+ y G" W& F; M+ k switch(p)7 ?3 ]3 x" b, J. J+ w
{
' ^! C0 _/ n I+ ^" S3 \ case 10: str='A'; break;
' U; M+ u6 K3 q8 H) u case 11: str='B'; break;7 Q: J) u/ S' X/ `) c. h
case 12: str='C'; break;
: x! E' x: \- y- @5 o) B7 O$ Z case 13: str='D'; break;
+ B# Y: w5 W! X1 L5 Y+ \ case 14: str='E'; break;" e( X q$ Y3 t0 T' q. A2 H9 A
case 15: str='F'; break;
+ i) g8 ?( i8 n L }
! E4 j8 G' h, O. ~6 O str[n]='\0';- {3 M/ i2 b' k$ \7 e7 \
return *this;
4 S: ]+ V* H6 c6 y1 P% J}
5 W. t2 G/ m* b4 xint String::get()//输入一个字符串' D g$ w. \4 I% d) V5 T' M3 r
{
: v! \* ] d' H2 [4 U$ W char tmp[40000];
2 b& t( x" x- q5 l in>>tmp;) L8 A. G6 a/ c/ E) s7 u, _
delete[] str;
6 f) z; Q4 X C% n. l3 M t size=strlen(tmp)+1;0 }5 o" z1 t& U8 x( h/ l! r
str=new char[size];" P& I, e. m2 ~/ U5 q ?0 }
if(str==0)
5 n/ o }$ t3 d; f. {# E throw "error";0 ^' a) p8 w" e2 C1 p5 i/ W
strcpy(str,tmp);
* G6 `6 Y# h; ? return size-1;
& l; \4 Q5 _, M: R! Z3 ]}</P>1 x9 A9 i# ]/ m3 H$ W( I. x
< >void String::get(int *p)//将字符串改成整型数组: W: N# L8 e( {
{( G) O& M- c" [+ v$ m+ a
int i,j;# i% n4 R' q9 `
for(i=0,j=size-2;j>=0;i++,j--)
8 q9 c5 @" d# u: H* f: Z if(str[j]>='0'&&str[j]<='9')) d+ x) p: \) K& g4 p p; @
p=str[j]-48;+ m8 l1 {7 c0 D* Q1 J0 Y
else
. C4 v& G! T: C4 d {/ U. _+ r, s4 V# a/ i
switch(str[j]). L9 j9 A0 T$ Q7 S5 I! y
{2 ~( a; ~6 O# x; w" D
case 'A': p=10; break;) t3 v) C& F+ s0 _+ r
case 'B': p=11; break;/ o* r6 i9 o& j
case 'C': p=12; break;
/ _; \$ S: w3 _5 A case 'D': p=13; break;$ O# l3 e! D/ B* f" l: J) p0 c
case 'E': p=14; break;
) M0 F$ }( u9 G case 'F': p=15; break;
5 p5 R" V' Q! Q8 y }
1 ~; G, y: Y' _/ ^, N }7 {: O: p* R/ F# K6 ~
}</P>
' x$ g. u4 R i3 q4 c i% E< >void add(int *p,int &m,int *c,int k)//将一个数同其倒置数相加
- K1 T. j& R: T3 I6 A! V# m{2 |7 Y4 G4 z8 F
int i,j,a=0;8 H- T; \+ q3 M, l. O
for(j=m-1,i=0;j>=0 && i<m;j--,i++)
6 t7 B$ V6 J5 t& \. ~1 `3 [" r# x+ r4 D9 @ {. R7 {; w5 L7 ?0 T5 W
c=p+p[j]+a;2 B& c9 d+ j! T! Y9 K
a=0;0 y0 \. d3 T, L l: t0 c
if(c>=k)
3 s) _% a1 w% X; W; D6 ^ {/ V) k0 Z$ e9 R' B3 _. O3 \
a=c/k;$ T/ V! Y+ `+ f% H# M0 f
c=c%k;
1 W6 W# Z8 v3 z4 u3 c. \ }: }3 D2 K' Z+ B, n% P/ B; j
}
8 i2 I% X7 B( s/ W% @ if(a!=0)
2 T! [6 a3 R p* @2 @0 ? {$ e& A' a8 Q9 }# F0 V
c=a;
0 ^- Y0 J4 y* ^ A3 Y! ~ m++;# y2 a2 `# Y% f. ^. I
}
, _) e% _$ F, N0 }8 @2 d}</P>
& H9 G2 B. V6 _< >bool match(int *a,int n)//判断是否为回文数
: Y; o5 x% y1 R{
* I+ N) }1 D/ t$ i. O* i/ V( ` int i,j,h=0;
" L( f3 ~ `" J7 y2 e* q/ X for(i=0,j=n-1;i<=n/2 && j>=n/2;i++,j--)% k4 P' `2 t8 ^9 k+ \
{2 l! C- a3 Z, U* B
if(a==a[j])) G& z; C2 Z% O# Q% b# R
continue;1 O/ z' B7 X5 g) D6 B: u& K
h=1;* I1 x( ~2 G, |: Z2 E! {2 r: |' a8 Q# A
break;
# f. J7 w$ |) l" I7 _7 W& \ }& e- p+ G1 f3 R: Z6 |$ I; o
if(h==0)+ v0 w3 r& L6 T$ H. V1 q$ K0 r
return true;& `) i9 i+ ~6 A$ N* ?# ~
else
& d! O- ~. M6 j. N7 o return false;. `! y4 ^9 X, l; Y- E
}
, X: C$ \8 U; O( t9 S: Q4 j- J//clock_t start,finish;2 j/ M+ K( @$ n3 H! R
int main()0 c3 l) t1 h( y/ M: j: D
{//start=clock();
6 {, v; s& v4 a" Z4 }0 r( {! Q if(in.fail())$ Q3 ~4 K: o; F9 j3 @/ V
{
/ A Z. X9 L4 n) `6 b3 y8 D: X cout<<"the input.txt is not exist!";
% t) q1 D2 ?- d7 r. v exit(1);5 E* T; w0 F8 N4 s3 o3 ~
}. x4 K6 @2 v, g( [
String s,s1;
e$ f4 ~; m" r* n int n,g,k,*a,*c,m,h=0;
) w! o3 G( x8 U; z8 U0 d in>>k>>g; ; f5 N0 X; `8 [+ }
s.get();
$ b! j4 d1 d1 N* a3 l+ x9 ~- e ( B2 `) i9 P) }( F+ `
n=s.length();
' C7 }# R) ~- i m=n+g+1;! h: b5 F* |, w6 J6 P% x+ Y
a=new int[m];2 r5 y, y: n& Q3 I! T: h8 P! k
c=new int[m];
& M; ~/ U% c3 b0 K/ k s.get(a);
) F: D4 X1 z4 V. W! E if(match(a,n))% j3 T& N( X; S! Y, L( [2 K* G
{
% v8 |( z! R7 }& ?& _ out<<0<<endl;/ V) O2 F! K% H8 z4 b9 u
s.display();; l) v$ l+ S. B T. `6 {* K
return 1;
: `) m! b/ k& r0 a }
o3 K- p2 E$ k: G' ^ do- e0 p0 A; F1 X* s# u, U( P
{
8 g z- A" m6 m# ~* ?& S1 K if(h%2==0)
/ h, c" ~/ r* r `3 [! v add(a,n,c,k);
" Z! a! ~% b4 _4 D# N. Y8 ?) @ else
1 Y0 G3 I# i: V- R add(c,n,a,k);& J% X7 e2 W6 s+ |9 j
h++;2 o& w& B/ ^; F* _5 ?+ J9 Z4 C3 }
if(h>g)7 D0 g: F! C# }* j! j
break;
% V% U) W: F8 Y$ H/ z2 R }
/ w5 W" K9 P" l+ n* I while(!match(a,n)&&!match(c,n));
& A& u+ h8 |( Z4 a- o if(h>g)
- c* j; _7 o6 [* e5 s9 _ out<<"No Solution!"<<endl;
8 G+ v. s" V; Q% s+ O/ E else( A) y2 I1 L! G2 n' g3 D# M
{
$ \) Z L2 y" |5 t/ q) ?- m out<<h<<endl; h) V6 h( C+ i# a% [6 [6 n5 ^" }' U/ M
if(h%2==0)5 t3 x& L; m, N. |
s1.change(a,n);8 a3 J, m. A0 }5 N- G; G3 ?. q
else
7 Z+ K3 T( |5 {% P& I a' m) x& o s1.change(c,n);) s% ?/ L0 t; L/ h0 G% H3 s
s1.display();. u z, r: Z$ M' ^5 J
}+ Y) d* o/ |. [- V$ M+ f! M
delete[] a;4 O& n. z; J M0 b8 f4 t! V5 P, ] S
delete[] c;
6 j; S% Q0 F+ {& n' C- ^// finish=clock(); u1 Y& C% \7 t; F* G
// cout<<finish-start<<endl;( S) q C; G6 d; G1 N6 V- a% N
return 1;, v+ z8 y! ~. W0 h
}</P> |
zan
|