- 在线时间
- 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>
' Z( X6 J# t6 ]. W#include<fstream>
6 K8 h6 A4 D6 O% A8 r) M#include"string.h"
3 |+ T s: }; a' X' C( D//#include"time.h"
) B1 b0 O3 r, L. h* s- t W# tusing namespace std;
8 |$ O/ F1 k4 N' G, p, E. @ifstream in("input.txt");& {; {& Z3 d3 @5 `
ofstream out("output.txt"); 6 }( O9 U' L* a8 M5 N8 k
class String
* m B- V5 H) ]; ?8 I( m" e% X{/ n/ I' J# I8 c; M/ k
public:
* E' V+ Y9 W7 X1 ` String(char *s="");
2 L+ W% t( B7 J7 t String(const String& s);5 k; C, l3 y6 K) j, r, y. s
~String() {delete[] str; delete[] pre;}0 p' H! d( ~& O/ h7 e4 a) Y; I
String& operator=(const String& s);# P. C/ M8 l6 {; ]% C& S
int length()const {return size-1;}
0 i6 M0 Q5 s7 _6 p: d int get();, M6 u% A0 s' s9 _" G7 m8 u
String& change(int *p,int n);8 H$ c( {% R. W: Y
void get(int *p);
3 M6 z% ?- M4 O% K4 n void display(){out<<str<<endl;} Z- ^8 o( a, i
private:
; c& d& u, m$ J- i char *str;
( c# c3 W% Z: u% j$ W# d int *pre;0 p9 {3 r3 I4 E4 U; I# t) y
int size;
8 A- [' B; u6 R};</P>
, @6 _. H8 P: C< >String::String(char *s)
, ?6 S: k# @& ]! Z{
" `% T, P' I A size=strlen(s)+1;
8 d2 K0 I6 i' \( N. O0 ~ str=new char[size];5 ]: f7 `3 f! e4 F6 O
if(str==0) throw "error";
" d9 T' k+ u T8 A- e strcpy(str,s);
1 j" J% v4 T7 K0 O; y% \ N pre=new int[size];0 o4 D0 d' _! G, a- g
if(pre==0) throw "error";; q6 g( }- `! r7 _# y! ^0 \
}</P>, R! H N, b* ]; b7 P$ b* C3 H$ l
< >String::String(const String&s): W `9 m& g/ Y- n9 H* r7 F! g
{ Z, g, l( C5 V
size=s.size;$ }' N" i9 w4 [" @1 y
str=new char[size];" {5 z# A" n! M- H$ E
if(str==0) throw "error"; \* m2 C- X/ e7 _0 ?- Y
strcpy(str,s.str);( W, ?0 o% r; |
pre=new int[size];: M5 [4 {, h+ Z# j
if(pre==0) throw "error";# g! k; _# S7 V; {* ] b6 B
}</P>: Q9 _# E8 v: `
< >String& String: perator=(const String& s)* A- }$ J0 A/ w* F6 Z
{# I0 B1 j; y) \0 B8 w
if(s.size!=size)1 `9 b1 V( [% P7 h. R6 H
{2 D p- n3 i! O; ]+ F9 m( E
delete[] str;6 j8 i) ?/ g9 R* K2 v. ^
str=new char[s.size];' K4 x8 ?1 o# l, T+ P
if(str==0)* d9 f }0 M* {
throw "error";6 I( f& o: g# R! C8 v' u0 N
size=s.size;& v2 O6 T4 {# N5 M, |3 T
}/ H! h) G0 X6 }. j" x/ ?" r9 `
strcpy(str,s.str);# D" h. m. ~ H& q+ c( g
return *this;
: a: z& m) ]3 Y# R* [4 F1 U}</P>
# f# R; s7 r. m n# Z# k< >String& String::change(int *p,int n)//将整型数组改成字符串2 p% ^1 j6 M4 _6 H6 O
{' ]: c- p* s) J0 ^ }, n7 l F8 K& p
int i;
& _) [% `4 g8 k' U2 _; M, U delete[] str;
& m% O, i& N7 @& j9 f str=new char[n+1];. f/ {4 H6 Q- P3 D, P
for(i=0;i<n;i++). L6 ~% I# W$ B
if(p>=0&&p<=9)
6 y, w6 u& `; |) b3 H R% r str=p+48;5 m/ G {; G! N9 ?, T+ U
else/ x. W# k+ t! y; L8 `) j
switch(p)8 {1 h) |' m" W& F: R+ e+ x
{2 r- u5 ~5 C, b# ~
case 10: str='A'; break;' y# P) W& G) X$ }) U7 z+ x" i
case 11: str='B'; break;' D+ O3 O# u1 |/ m; L/ h0 ~9 s }; I
case 12: str='C'; break;3 ?% f' T& Y a6 F- d- t2 u* m
case 13: str='D'; break;
3 N& B% Y, q: t% ? case 14: str='E'; break;
- A' m5 J4 d. G; [ case 15: str='F'; break;& _' B; P6 u$ i, q ]. `9 o8 o
} q2 h+ g" o; r# `
str[n]='\0';
2 @' { n) ?" d4 f. ]1 B return *this;/ g; q% A* e4 z7 d
}
, G- T5 b. }! g% |int String::get()//输入一个字符串
0 N1 j y6 E1 t{3 ~7 ?# w4 `/ T( ^: U$ p( D
char tmp[40000];' F2 `, z6 z2 H; K
in>>tmp;
3 V& R& ` G3 i+ B3 ]" | delete[] str;. g$ V+ C8 e: b/ x8 r3 [8 ?" a
size=strlen(tmp)+1;
, @. ~$ T; j5 [6 \ str=new char[size];" h( R" Y' ?' R* N# r
if(str==0)
, R( E- ?6 r. I+ E/ V" } throw "error";
( T1 f7 a) V$ m! o" o9 Z# v9 D# g3 h strcpy(str,tmp);7 n1 a- f' {% a7 o9 Z5 _
return size-1;
1 n: {4 g+ A- N8 e4 r; R1 J' Z* {}</P>
/ [, L( O: E6 _/ j5 L8 x< >void String::get(int *p)//将字符串改成整型数组
K. B7 G+ C/ J$ T{$ H8 c& S, r* C8 U5 ^7 g
int i,j;
0 C3 y; G% x/ g; M5 w |! v6 T; \9 R. } for(i=0,j=size-2;j>=0;i++,j--)
- ?! Z. D( @; {. ~/ V1 K if(str[j]>='0'&&str[j]<='9')
- q/ }6 \3 k2 x p=str[j]-48;/ t4 q5 U3 j5 b" [0 P( m) k
else
A- i9 f& n2 m) I3 L( q {
( S* O: X# E4 ~: `3 u. b4 E switch(str[j]), J4 r `; y( v
{- b, c! B0 g' S& O/ c* {
case 'A': p=10; break;8 M* a+ |' p* L& Z, I! K+ I n W% Z
case 'B': p=11; break;
$ v% J( U8 m1 e2 z0 `+ u case 'C': p=12; break;
* A0 O6 c0 V( Z& e3 p' V0 P, o case 'D': p=13; break;, G, E: C5 H2 u( [
case 'E': p=14; break;! N8 d% ^: ?" k; k3 R' o
case 'F': p=15; break;
" P! w- D$ B. v+ L' ]9 n }7 q# u7 v( P6 C2 L# k$ b
}: _, v1 E$ Y1 o& L; ^
}</P>$ i* F* r, ~6 a: _
< >void add(int *p,int &m,int *c,int k)//将一个数同其倒置数相加9 v' Z& x8 X! z9 s
{, m# b3 f, C& S* W8 L- N+ C' N
int i,j,a=0;
G# Y2 k* ~" h+ w# C for(j=m-1,i=0;j>=0 && i<m;j--,i++)/ `1 _: n- k; K; X
{
. w) g5 I; {) s( ^+ R2 r: @ c=p+p[j]+a;/ _, P& _0 Q( m
a=0;
2 R$ M h. Z ^+ s8 H if(c>=k)9 U$ C* S) [5 C+ {' P
{
! w) {/ f4 f3 B1 t a=c/k;
2 ?2 J g" \! F1 A# d" g c=c%k;& ?, M% S4 G, b6 R. u
}
: o( _! r$ C8 o p' i } 8 ^* ` i. z9 [7 ~% M$ V
if(a!=0)& ]2 M; p& V K; b- @( ?3 A
{
, B7 R, m4 X6 J7 T# {) [ c=a;
$ I- G6 e5 I8 F4 c2 u( A- ~7 i m++;
! t1 w V" ?& S }
$ F; O2 l' l" o& q" Q$ w}</P>4 t2 q. {2 y& `' r
< >bool match(int *a,int n)//判断是否为回文数
$ s- U: \5 ]3 M0 b. v( m{/ }( o, p; o( c. f; e
int i,j,h=0;
) m& L' b0 Z; `2 A for(i=0,j=n-1;i<=n/2 && j>=n/2;i++,j--)' z. M. J+ |: t6 e c1 K
{7 k4 O/ G- _/ i: M6 z6 T0 z/ b/ M9 `
if(a==a[j])' a& V2 T7 n, D/ U
continue;" c6 v6 n9 u# W w& F/ z0 F
h=1;
( Z0 W2 K0 x w+ P break;0 S/ D2 q% _) e
}$ L3 q4 W+ J; Z* Q
if(h==0)
$ o0 p, H: u/ _" s" I) L return true;
1 n; a/ K# H+ Y0 \ U6 i% e else 2 S! o9 k4 h* l0 K/ u- T7 w$ P
return false;3 U7 P7 r5 e% ?( @" T
}
- m8 x8 R+ m& R# ^% ^1 m//clock_t start,finish;; o$ Y' j# E- X
int main()
+ ]5 e: ~& z) j$ U" l2 b* @{//start=clock();& k' B6 X v% F1 H% x# q
if(in.fail()). c0 f# W2 {: p0 {
{
/ a G1 r3 J1 m1 i$ `4 t% ?+ m cout<<"the input.txt is not exist!";! V) m# B" o3 d) W" e
exit(1);
9 J$ t. x) H) j" D* {2 ?6 S0 ]1 j! ~ }1 h" \! M5 j7 |$ h" {& {& E, B1 I2 z3 u
String s,s1;) U% A m3 a! t2 ~
int n,g,k,*a,*c,m,h=0;
j3 E$ q+ e- L in>>k>>g; 6 y' C' R/ Q4 ]6 w- V6 A. u5 X
s.get();
, }$ B9 w* U! L {
: @) g1 J7 S" C' C7 y# C! x n=s.length();! x9 [$ R* h7 K7 b7 u) L3 R4 d
m=n+g+1;
X/ \" |1 s; U9 n- E. t a=new int[m];( L5 g3 Z& N# \% ~
c=new int[m];! u9 B1 p& d+ r( p
s.get(a);9 J Z }- P% \% y% q: y/ F
if(match(a,n)). ?& m7 z1 K, d, Y
{
9 s- V( O5 ? Z7 B# O3 l7 I: P out<<0<<endl;
- K+ R- O( V) U1 ~& w s.display();
5 M m- S1 R8 i4 o o return 1;1 }1 Q3 p$ _! s0 [* F3 s. U
}
" M; f9 l! ~8 m do& q+ ?, R% b6 _8 F( H1 w; ?
{0 g. b4 ?! `) |4 z8 J) r' i/ q
if(h%2==0)
1 h/ S* l% G8 a% \% M8 K add(a,n,c,k);7 u: m1 \& ]( Z8 m" ~- S! v$ F
else
" E# c* ^' A, W$ \8 a! B add(c,n,a,k);* |) p( c3 ?, z" J' B# E, B5 [ @
h++;% @2 D" p1 C3 T5 `
if(h>g)8 [. o/ m; |7 x1 h- c& C" C, _
break;
u4 @* a/ l4 [8 @ }4 n; A" o/ q) [ b8 b1 r. v; J- d
while(!match(a,n)&&!match(c,n));3 ^# c9 N% C5 |4 z( _
if(h>g)
) e$ [, l J* G8 k out<<"No Solution!"<<endl;8 `! C3 P; U5 q. p/ _: r0 x+ `
else* P# G& ~" ?% V& B
{
: u2 X+ c% I$ D6 q5 f out<<h<<endl;
% t3 W# X; d1 U: a% r% N if(h%2==0)
) M* I& ~% m, o" R1 N2 g% w s1.change(a,n); Z* g0 E6 V8 a0 S; C! |
else
) W" Z2 U# m& {$ o% y) @4 j0 r s1.change(c,n);
$ z/ F( E$ Q6 n2 o s1.display();) }8 g$ s+ b! H" A8 B7 Y
}5 |2 \1 Z2 x2 Q( o
delete[] a;7 G( U+ {3 |; q" g% d% X
delete[] c;
% A; [2 J x( `& x, k# f$ w// finish=clock();, R. ~$ ?3 j2 q; ?5 N y
// cout<<finish-start<<endl;
; A7 [4 Q4 j5 {6 [ return 1;/ K. m- Q9 O/ B4 j! z
}</P> |
zan
|