- 在线时间
- 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>
/ O. M3 b& V' f7 u#include<fstream>
- m8 N( R) B; x }#include"string.h"
/ Q: V$ r5 w3 i; N3 x//#include"time.h"
$ k, d8 u3 v0 tusing namespace std;
3 F! V' x5 ~& n, ^) M) ?& Tifstream in("input.txt");1 i( E" Z: _: w; [% E, U% X' p3 x
ofstream out("output.txt"); - I7 i9 I1 ]! u
class String + c. u, P7 l V4 H9 G+ M# x
{
4 k5 w& g3 M, Q8 _public:! u! T. k0 i" b/ e$ {) b9 q. L
String(char *s="");
) v! E4 [5 ?/ d" G [9 Z1 B String(const String& s);' k; T: w0 |) J
~String() {delete[] str; delete[] pre;}
( u- w$ k3 `" H8 D String& operator=(const String& s);
. h6 O$ C& q5 l* m' j: v int length()const {return size-1;}
- I. \1 L; e' S" k A int get();) {0 V7 @# y5 |. y+ \
String& change(int *p,int n);
6 _" r7 z" j6 [) j. { void get(int *p);
9 q; k \" U8 c7 \2 Q void display(){out<<str<<endl;}
3 R$ Y1 e5 q/ W( ~/ d9 Dprivate:
`, V0 p- u& Y c char *str;6 l6 O% L! G9 g6 v$ z
int *pre;
# L; w- x) O- ? int size;
/ ]# m7 Z1 D% L" \8 N1 W2 [};</P>
% g5 V! |+ H/ {) Y7 M4 q, \" l& i< >String::String(char *s)$ W* X" \# Z+ H
{
* u1 i5 \+ `" b+ B% B+ z& G size=strlen(s)+1;
/ i: d& E5 Y6 B$ y. e8 c str=new char[size];$ o; Q# g9 _. D
if(str==0) throw "error";7 F& D4 w9 N; g6 V) @9 [
strcpy(str,s);' E% @2 S5 B2 I! N: r
pre=new int[size];
/ x8 \( V) ]7 a; h1 g. A if(pre==0) throw "error";1 [1 u2 c) A$ i0 l& ~6 L
}</P> u+ m% t) y& a0 g2 T
< >String::String(const String&s)
+ Q6 o8 g. X( s- w{
) ^2 F( m: {0 ~* ^ size=s.size;
) f6 `$ P2 o" y( e6 e% x% u str=new char[size];
+ h3 Z4 E: M8 O4 U' |) h* K" E if(str==0) throw "error";( D5 d1 l5 N) Z5 \. R1 x
strcpy(str,s.str);
% t, x! w3 X6 R$ A, R! _4 g- D/ k4 N. R) j pre=new int[size];
9 [3 X2 d a% ]4 W! } if(pre==0) throw "error";" i0 v8 \8 @0 s7 Y, g
}</P>' @5 [# S5 k9 @( V" G: s
< >String& String: perator=(const String& s)* b( Z+ P' {! l% L% C- k" T
{+ U9 H/ B% s8 S, u" u9 r
if(s.size!=size) @. b% s6 h9 }9 o
{
) s# P! T( \: J3 O+ C& d! i delete[] str;
! x: _- \( h9 I/ I( [$ _! O str=new char[s.size];# h s1 w+ k& _9 G( S! Q6 S2 T6 m
if(str==0)
5 p0 S* ]4 y5 Z" N throw "error";" A0 v" z9 M3 Q+ {
size=s.size;, e, r+ n) j' ?
}# ]" o9 |, ~, l) m$ b
strcpy(str,s.str);9 ?6 B) D$ T$ B8 l* V W. v
return *this;0 B) l1 x$ I0 @7 U: O, ` \
}</P>+ l$ Q6 {( b% W4 X8 i
< >String& String::change(int *p,int n)//将整型数组改成字符串 ]. J8 p! A' U4 k) P# L3 n2 j
{2 }* T* E, C2 x- K" W
int i;# ~; Y; D' w& K( e
delete[] str; f$ I! z$ T, R' I! d
str=new char[n+1];
0 {- _8 }) m0 E0 _ for(i=0;i<n;i++)- L+ ~, L' ?8 @5 U. l' M
if(p>=0&&p<=9)
4 d6 p: e$ z1 B8 V; X$ x) w str=p+48;
" I# B2 j& x: B, H F) T( H" ` else
* a* X. D# G z( h u3 c switch(p)
( f0 k4 y, \- c$ i/ s4 @2 G; |( w9 K- y {' } h$ y/ ?" x/ O9 O0 }
case 10: str='A'; break;
; z! h N+ A) b+ u! K! x1 x case 11: str='B'; break;6 `; _6 Q; n$ ?( q7 V! T/ N6 L1 w# w
case 12: str='C'; break;" t: J, g7 b. t5 J; j% J# D
case 13: str='D'; break;! E; i9 ~8 a; I# Y9 |# K
case 14: str='E'; break;0 k# W7 R- T2 E/ ?; I) ]8 P' m( B1 q
case 15: str='F'; break;# K, Y/ ^2 ~" b- K7 D. y
}5 T, x3 _% w: | N
str[n]='\0';# ?+ d! v3 n; Z2 ~6 B) w
return *this;
/ a% E2 m* T9 R) n* M. j& N4 `}9 {3 y% D3 e& c2 d: G( k" A
int String::get()//输入一个字符串8 n9 Q/ H- Y: W
{# o0 b5 n' F8 r0 j6 _7 U5 i# |8 R9 c
char tmp[40000];+ g* `9 f3 W6 k3 y1 Y1 x
in>>tmp;1 \, a0 s* l" B9 B) L8 b
delete[] str;
7 |- o' Q2 s" `" y5 o size=strlen(tmp)+1;$ n2 o: Y- l. v7 t- Z
str=new char[size];# Y1 s0 Q" `, N8 E1 T, c% X! z
if(str==0)* m0 S, R+ Q& i, E, |$ R
throw "error";
" g z, U1 ~) ?0 f& v; m strcpy(str,tmp);
5 R9 ]$ f$ F+ u6 k9 L0 S return size-1;& Q% a: i' _$ K# W
}</P>$ t/ E$ O* Z8 a" G
< >void String::get(int *p)//将字符串改成整型数组
3 V5 G) L- S+ \ l2 w' R1 Z8 ~9 O{4 \; |) I# l& a) p8 x+ e4 C
int i,j;5 [ `" ?( g$ G! D9 @. B3 ]
for(i=0,j=size-2;j>=0;i++,j--)
~% U: L Z2 d& C8 W if(str[j]>='0'&&str[j]<='9')" _" C- K. [1 r- T1 |8 C+ R" \
p=str[j]-48;
9 |9 Q y( M, E4 g6 P- q. x/ j else& W+ l/ U, L0 @9 a4 ~
{
6 O5 o: j; Q5 }6 B3 H switch(str[j])' v& K! M. a2 _% i
{
% f( w' z' Y" Y, y case 'A': p=10; break;: T7 V2 B: t- y
case 'B': p=11; break;- O3 _4 Y; U G8 j l. @( H& w5 M4 P
case 'C': p=12; break;$ M/ a1 T/ G8 Q# O" i0 ]
case 'D': p=13; break;+ \& f' e' ^: u# n2 b
case 'E': p=14; break;% J# `8 F. C7 @
case 'F': p=15; break;
8 q& ?$ Q" x9 b. V% p }4 B6 t$ j# c' ]* K& i1 q; `
}
0 c0 k& I/ {6 |4 g}</P>
. [0 w' n9 m! d# l< >void add(int *p,int &m,int *c,int k)//将一个数同其倒置数相加
/ N9 z/ F9 p5 L$ i* E. F{; m. D; [' b3 l4 f5 h
int i,j,a=0;3 W8 Q( D/ }9 y* s1 t1 k9 [9 y. K
for(j=m-1,i=0;j>=0 && i<m;j--,i++)
: O5 Q' k- \2 r# S {8 F. j! ~8 g1 B7 k+ W @9 o4 U+ O# U5 Q
c=p+p[j]+a;
) `) l5 q& M0 C& X. F- Z6 ^) k5 u a=0;
L# T$ i, A) L if(c>=k)
3 m# L, O0 c) ` {
& E z( {0 \, p2 F& N7 X a=c/k;; X; R7 k" k6 t! t) v/ {& E
c=c%k;1 _0 c { U5 V0 H; n
}
- x" Y6 X8 R* F9 x Q. m# T } ; a, z1 b! ~: ^
if(a!=0)
* k" i) A; ~; u: V3 [ V- T {/ y# J" `3 U: O8 g, U
c=a;0 s3 @! n3 j Y5 X" t5 g4 E
m++;
& T0 N8 O+ ^8 u9 W& R& { }
% M% G# ]5 B) F q' c# x}</P>/ y1 `) n x0 i+ p: U
< >bool match(int *a,int n)//判断是否为回文数
# }! a5 d1 b; [/ ^7 k{$ `( [1 i" @- v
int i,j,h=0;0 J) n; U! n+ r' S* m( B
for(i=0,j=n-1;i<=n/2 && j>=n/2;i++,j--); z. y _$ @1 d! T# O
{" @2 u; N& K2 N- ^) ~$ v L
if(a==a[j])
" X6 h5 y* R3 N/ n! u) G# l. L continue;
. `- A; g, z* ^7 n+ @7 y7 q h=1;' h% q, D) R ]. E3 D; R# w: i4 F
break;# Q2 ?: Q( l0 f
}2 W# W- ]% b0 }: i1 H7 e6 e
if(h==0)
; F7 V: A# L/ Y2 K$ @+ A+ f) B) J return true;2 |+ n; J* U( ~4 [. L) I/ I
else 5 ?& U' j. b5 [/ E6 `
return false;3 A2 u) W% |' v) [
} R6 g" k: }3 q$ k3 V# u" y
//clock_t start,finish;) n2 v! x0 X& d. |8 b! P% K; o
int main()( \, Q' W7 e9 k8 f4 x+ K2 [
{//start=clock();+ x1 A9 z/ u; c' `
if(in.fail())/ Y: J( w* [, i# N9 y+ k
{- z7 l+ `$ ^' _' g$ b
cout<<"the input.txt is not exist!";+ H) z2 S# Q# \3 Q
exit(1);
% x( Q5 P% ~. U: k }
& Y) E" u0 }! A2 u- q String s,s1;3 [$ X0 O* I# l+ j; A6 Z7 z- O
int n,g,k,*a,*c,m,h=0;
) |3 r2 ]- O! M5 u/ b in>>k>>g; 5 M) j4 U4 b/ u0 X9 g
s.get();
: N% r; g+ {7 ]$ ~$ i, w
) y- k, H) E9 U) E( L) O ]7 O4 m. O n=s.length();7 W. n$ P( z6 ~( a
m=n+g+1; {' o' ^3 A# \
a=new int[m];7 B6 Y. b: y5 o$ i% H9 G, g8 ?; N
c=new int[m];
1 O/ W9 f3 J4 p0 L8 O' E+ O s.get(a);
$ R- I$ j/ h! p/ S- G( | O* m if(match(a,n))2 o! g4 L* ]! O2 L2 p% ^" U4 Y: z+ Y8 ^
{9 e2 N. z" E- C3 W* i# V
out<<0<<endl;: ^$ ~! \1 j2 ?
s.display();
; @9 |4 K- g: C$ d, ^) Z return 1;) l8 T4 o( }5 Y2 o
}
: {% Z; l. O' B" c, @# F5 k" P+ A; f7 N do. s4 U5 w- q% J
{/ y! i9 p( Q/ A) N1 G4 |
if(h%2==0)+ h( v' U% c, k! |' H; N
add(a,n,c,k);& Z; E- T! B* }- }
else
' N5 }% |$ @4 F @ add(c,n,a,k);
" n! m0 l5 d' p5 ~5 X h++;
: B! w }' i: s& @ if(h>g)
" z" w2 c1 w3 J8 b1 y" g break;; H9 a. |# F2 e$ w, K* U8 y0 E% c8 N7 H
}9 h$ @/ i0 W: @& J+ \- |$ o+ `
while(!match(a,n)&&!match(c,n));
' T6 L2 z a1 u$ r0 z* ~ if(h>g)
4 A% Z5 |6 F1 p$ |* r3 Z out<<"No Solution!"<<endl;
. ~" v/ D0 A E/ ?2 L else) ~! g# n5 H$ V) R8 @5 S7 j
{
: B" P2 _2 s) v) ^ out<<h<<endl;& k3 `7 H) u3 N* K* v0 J' @
if(h%2==0)5 f h1 q4 k7 g8 F
s1.change(a,n);9 t0 c; H1 A6 X8 ~$ \
else
" g1 j) \& [( X s1.change(c,n);
6 R+ N0 k( r( k, @' u1 p; X* _0 ] s1.display();, _( W) G9 D1 P' R' Z d4 N2 M+ y
}
( X: }/ V. n- G z# E8 @3 o- A delete[] a;
2 T% w/ i8 Z: Q; P0 v; } delete[] c;# M# n3 P* F% u0 r; D0 ?
// finish=clock();
% C" ?7 P! r8 O" s7 h% C// cout<<finish-start<<endl;
7 P( l! ^ b) I return 1;
; m7 _: |& I- p) R; v8 a}</P> |
zan
|