- 在线时间
- 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>! K8 o- M6 E0 s' S P; n
#include<fstream>7 i8 W$ y1 f+ i' k$ ] M; C
#include"string.h", `7 `1 J2 E- a: O
//#include"time.h"0 h5 u' J( p# _2 B5 A
using namespace std;
% F$ O1 A1 o& z2 ^+ X8 fifstream in("input.txt");
9 W+ `( ?$ X' K% U# d% K* Q, |0 hofstream out("output.txt"); ; U" y* C$ S) }0 U$ |
class String
! ]! ?7 N6 o: M; A{
6 p: S+ K) z% ]public:
! i/ g0 |/ e/ d! ?1 X+ N String(char *s="");$ Y, x2 K0 [+ S+ ]0 M
String(const String& s);# J0 a: d2 T% U1 M s/ X5 u
~String() {delete[] str; delete[] pre;}1 _- V' c3 G8 l9 m! g/ b% X' Q
String& operator=(const String& s);
* d, R: }* O3 [3 N$ }* n int length()const {return size-1;}
0 @8 p: U7 V/ `' K$ L int get();' A& v7 o6 l- L; p
String& change(int *p,int n);
% k6 {9 I* g% |/ ~; O void get(int *p);' G0 h; L: C0 \0 r. E, H
void display(){out<<str<<endl;}
2 B! n: S0 G6 E X0 R, [* g% tprivate:" K8 c) F4 z9 k) P5 z7 V
char *str;
' N! i1 H: x1 Q; S8 b; B int *pre;
! q( `3 [( c9 U7 Q* o4 j int size;' B$ z1 H( t( ?. p& B8 {7 q
};</P>( N. c- t+ @6 B3 H( ^/ s3 C
< >String::String(char *s)# O1 g' |% L5 S, s
{' O9 A1 x. p, M/ x2 O6 N: W3 M& V& r
size=strlen(s)+1;
' [9 X5 r/ |; e, i3 S8 s3 F str=new char[size];; ]9 B( Y) w) T: n# z9 ?9 Q3 y
if(str==0) throw "error";; f8 y+ p) g3 t4 W. I: {
strcpy(str,s);3 N4 U6 z% C9 B9 K" {: V
pre=new int[size];6 C; A- ?) V5 ~. p9 g$ {1 ?, M
if(pre==0) throw "error";! Z: V4 @$ }% R* x5 e- e, a. J. t
}</P>
0 H {3 S' l$ E9 g5 R7 H: H< >String::String(const String&s)
: I! N2 z& h2 l6 Z' k{
0 g" J$ @2 h2 e4 q- }- D6 t* d/ C size=s.size;/ J1 t) D3 j4 p; V, B) s/ H
str=new char[size];
3 t2 _+ L% w+ J; e4 K, ?' I if(str==0) throw "error";
: N: G; f# w6 T! g0 K9 J strcpy(str,s.str);! x* G6 Y8 j) }" U
pre=new int[size];+ }7 @4 e7 p# ~ P8 S
if(pre==0) throw "error";' s5 L7 H/ }$ w
}</P># k4 q a' m3 l4 a
< >String& String: perator=(const String& s)5 {; R; r$ O# A2 F8 I
{
# c6 z/ z; x: \2 n& g' _, B4 y7 @ if(s.size!=size)
$ j: N) E2 T1 W. ~; D {
3 d0 ?& b8 F* }! |6 r delete[] str;
R4 }; D) ]7 C str=new char[s.size];& ? p1 x! v0 b& t" g/ ]+ K3 ~$ G
if(str==0)
6 }- u- o u+ I4 q- I, Z7 r throw "error";6 L5 W t% _; q( z6 l! ?8 g
size=s.size;. q% m! F7 Q+ L
}
- J# ~; _1 C B# ~ strcpy(str,s.str);
+ W8 c {/ n9 V4 { return *this;; [: A2 ~% m! l: {
}</P>
# I8 O) ]$ N* G) K1 Y< >String& String::change(int *p,int n)//将整型数组改成字符串6 s+ a3 p T/ \# J, n- u6 s
{, J4 b' X9 }/ i: _- c; M
int i;
2 T+ x" N" ~9 E. n) w* m. a delete[] str;7 B4 ~- b2 g3 t. ?; h$ l
str=new char[n+1];" S0 i( A5 f# k; N0 q2 M
for(i=0;i<n;i++)
7 A; e9 g5 y, V* q/ H if(p>=0&&p<=9)
3 O* [7 S5 K" ~' E# T str=p+48;# o5 A( o" }+ {) q8 I
else. G3 W0 D. D- U) ^( ~( \
switch(p)
y) } d. V d }& R1 u# C {
. j- g; H9 u7 A: v case 10: str='A'; break;% ^: a; J& E2 D0 k8 ^
case 11: str='B'; break;
! K# d& W7 r4 D case 12: str='C'; break;, V a% L1 u5 g4 v, {/ s8 G+ W1 P
case 13: str='D'; break;
1 E" [$ O1 L1 _$ I case 14: str='E'; break;6 d' ]$ [6 ~1 r& X0 S$ d/ \2 x
case 15: str='F'; break;
1 o2 g6 z: K" ` q' v }& Z1 `* K6 J1 {# {! a+ `2 |
str[n]='\0';% g1 {4 C' |/ V: j9 i3 O
return *this;
$ ], O. R) _7 u( y# y+ q}$ ^- f. D; F* Z
int String::get()//输入一个字符串0 u. O& ~8 ?1 e" p
{; b' }6 J3 G0 B& I2 y; h" H7 i
char tmp[40000];
3 l$ o$ k% o' E5 h# I in>>tmp;1 \ }: r- u( m" p# X$ O
delete[] str;
: p1 z' u5 r5 k3 W" Y size=strlen(tmp)+1;
c# p! t3 g9 r Y+ l, T str=new char[size];
1 f) y9 O! B3 u! ]3 F6 B/ t if(str==0)' D- L7 V( n! p* q5 T" a
throw "error";
; r) b/ P2 K4 v0 F strcpy(str,tmp);* s% |2 \# ], `) W5 W- d
return size-1;, e4 @* V: M9 H7 x1 j
}</P>
1 y7 x$ [: ~: X6 Y2 C. Q0 J" S< >void String::get(int *p)//将字符串改成整型数组" J( H. v5 F% F1 h: {
{
8 @) R- F9 X! D/ L, ~$ ~% x int i,j;) H- P* u; Z, M& Q7 m- z
for(i=0,j=size-2;j>=0;i++,j--)! T& b3 W* A+ k! u8 C% F( d$ G. ~* Z( `
if(str[j]>='0'&&str[j]<='9')& [: u& B& R) v, T# r1 i2 K
p=str[j]-48;
( S+ Y. ~2 `, _4 w ^2 U. m3 t else
4 A4 b) b0 f+ L- B7 l {7 O8 `7 Q* `6 J4 L. }, }/ }
switch(str[j])/ Q4 e: J3 y u3 I2 O( }
{
% _6 v' a# X7 j3 N case 'A': p=10; break;, c) w; B1 z# E. p- i
case 'B': p=11; break;
6 R6 G. J+ \) x# v% X% N1 G case 'C': p=12; break;
" @# f' K2 L0 D0 j case 'D': p=13; break;* H+ K# P( W' P" {
case 'E': p=14; break;; M3 y. ~7 v0 ]& _( I0 ~' ~; n
case 'F': p=15; break;6 D, [& l. f9 n% j# `. ?% g8 O
}
2 q1 ^0 k1 X5 c L' G" J% v& K- C" l }4 w& Q7 V) B9 t$ J9 i
}</P>
% @9 x' `. T6 l& x* `< >void add(int *p,int &m,int *c,int k)//将一个数同其倒置数相加
& O. F% A i5 v{
' `1 p: ^: R9 E; ^7 B int i,j,a=0;8 I4 r0 ^" W) `3 W/ G3 ]! A
for(j=m-1,i=0;j>=0 && i<m;j--,i++)5 D* J* B' {- J( g* e% l0 F8 D& a
{
) a% P) O! h. m C0 \ c=p+p[j]+a;# b& z( W2 Q. a, h! T& Y
a=0;
3 i& B0 z! G4 o" Z7 a' x' w4 O' v if(c>=k)
% Z6 c3 W# f$ |- q" |1 b# F8 b) q {
. U' w/ g$ D5 S5 A" j a=c/k;* |6 A: @0 d: p8 b) P
c=c%k;
2 {+ `- z2 A p6 ^ }
# v: v* g# N4 R! {& c3 h }
+ }* \8 I6 i& [. S$ n+ q: H if(a!=0)
$ G. c. V9 X! P9 Y6 K/ q: C, ^ {
4 Z* F/ F0 Z" ^ c=a;7 R: ~/ e7 _. X) D5 C
m++;
( d, W9 o9 }4 E }, ?$ Y9 e1 w- g
}</P>2 u$ V: K7 n8 K. w
< >bool match(int *a,int n)//判断是否为回文数7 _5 ~7 v& ?% W& ^# e7 X# g
{6 v7 e; a9 i$ `! i9 H! T
int i,j,h=0;
6 v2 f! r/ l3 t3 s3 k5 v& u for(i=0,j=n-1;i<=n/2 && j>=n/2;i++,j--)7 ]- ~! |) {, v# m L, a
{, r/ A) h3 r, w+ f0 s. a+ p
if(a==a[j])8 {/ m5 X/ I% S9 m, m) w: |, Y
continue;& [4 w4 y0 t' O8 V& m" j# P
h=1;
8 y/ ?3 I( V% y% x break;) P: Q6 r- I) n" a# R
}
8 F- G8 A$ G0 L# o* |; j if(h==0)
0 R7 W, V+ E3 ~ return true;
; w; L% @, O' a+ R- C( [5 y else ' Z( H5 D6 r) q! w& {# A
return false;
9 h8 C. [& \0 [) P! W. q2 s}
% \$ U( \7 r1 n" S//clock_t start,finish;
3 C+ u! V0 |/ Cint main()8 Y! p6 V8 W% o# k
{//start=clock();
3 u- W- j/ d/ m. ~ if(in.fail())* L- D8 s$ X2 {2 |6 J, @4 }, s
{
8 v' m) V3 y: `3 {3 n* {3 U' l cout<<"the input.txt is not exist!";; ]8 l; Z# ?* D2 t$ N! d" G
exit(1);
; e! b+ ]- _! x1 b. }$ z# v6 T }
& h( U+ ?$ |: d3 ~: b String s,s1;* H; S @/ X. Q; H0 I
int n,g,k,*a,*c,m,h=0; X$ I* a+ c! A3 g w$ C1 A: r) t+ v
in>>k>>g;
9 B n6 {) _' b- M- J- Z! F- Y s.get();
. C; O! z2 o0 d& p/ T
, V) \6 v* x6 n' A n=s.length();
. N" {8 Z4 Z, D9 D# m" ]% H+ P. ] m=n+g+1; f# a. m7 L5 C2 t( ]+ m
a=new int[m];3 _0 L; ^ x' a5 w3 _. R
c=new int[m];0 L- @0 _" O( ]! t/ j
s.get(a);4 W" k4 `4 K3 c: u4 l/ a& H
if(match(a,n)): c% e+ ~5 z8 D5 h% E
{
* y$ l. b. k. ]8 d9 M0 D: C out<<0<<endl;
1 _' ^7 a* D5 v. ?# o7 ? s.display();
$ o5 F: Z' _+ i" _" s return 1;
0 S% C, k2 F% g+ n }9 Q# S' e# N( U: l
do# k$ V# J. E4 }4 X2 w: J
{
! M* C- O1 m/ J9 ?* M3 i9 F2 l9 { if(h%2==0)
6 v; L6 ?7 d4 M3 u V5 y, A- N3 T add(a,n,c,k);
" _9 u0 K* p/ J8 s5 p s* h else
% d ^: r# t1 _ add(c,n,a,k);' t; }- I3 K% J8 [/ D8 `& T
h++;
' \3 g0 l+ Y3 y# d( U( q6 t5 P if(h>g)' g* w/ Q0 O! N8 j
break;
) Z( ^2 I0 m6 a) \' b# k( V( C }/ Z8 U9 V, n# \, u& ^
while(!match(a,n)&&!match(c,n));
% g# c" A9 v! v( w" ] if(h>g)
1 c2 Y! @- C% f: X out<<"No Solution!"<<endl;
7 Q; S. ^3 J* F# v0 v8 Z9 g6 r# h else
9 W2 F* t0 i% o" D) J {
2 D* p/ a+ A5 q# }( q! J out<<h<<endl;
& A6 ?# h) G3 L% w1 C, l j# m- e; b if(h%2==0)
) a n1 e2 [8 z$ g% [: P% y" ^ s1.change(a,n);9 R' D+ k+ K, R3 R! \
else
: D. `* U7 o* b9 ` Y! H" M( ] s1.change(c,n);6 s+ [1 D' h3 S; l& d" X
s1.display();0 h/ P i3 V8 q6 S, k# v* f4 E
}
_7 }& k% P/ q& ~: U- { delete[] a;
* B) x& X9 P3 q, T! u delete[] c;
7 D0 i) K- f _4 }3 i// finish=clock();
% |* j j+ {; g& q// cout<<finish-start<<endl;
/ D, L: A8 \, H( U( ?" A/ E return 1;; B, O1 `. _" ~9 L. {9 ^+ `' L
}</P> |
zan
|