- 在线时间
- 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>+ N% a' L- }* Y; k8 q4 Y9 x9 V6 f# j
#include<fstream>
p* v8 y1 M" e( ^' W d#include"string.h"
: p* } X5 B! `+ _, z; i//#include"time.h"! U0 a5 p2 D# ~- B* Y2 @0 N
using namespace std;
1 u: X" l( z5 T1 hifstream in("input.txt");) y, b: W2 ?0 T% o$ \6 m
ofstream out("output.txt"); ( P- U3 b- }- X1 V$ R* H2 m
class String
w& Q4 a, b$ M' b* m# }, b{/ o: y, A- Y, B
public:# b( w4 ?2 O6 C0 ]% s
String(char *s="");* ?- s; r% ?) F q6 h
String(const String& s);
2 ^* `7 h$ ~0 {0 c: T* e ~String() {delete[] str; delete[] pre;}4 k8 z/ R S% p, z" I- L
String& operator=(const String& s);" W% E8 c2 H, d* t9 M6 O: Q$ K
int length()const {return size-1;}- q/ T# E& ~( i) d
int get();
4 z8 m$ f, r* n, B5 } String& change(int *p,int n);
% b8 e; I- z5 _/ I/ f8 ] void get(int *p);% o; M6 C$ t+ x5 }
void display(){out<<str<<endl;}% T( O- w9 ]& l
private:
- j( X$ \2 X' `1 U char *str;
9 D' Y# c( k! j0 k q int *pre;
0 @2 P, f' M6 w% D int size;+ o+ Y5 y& T7 y3 ?0 S: ?
};</P>
- n. T; K' I/ U1 [< >String::String(char *s)3 V }5 Z7 G m0 J' y5 U( r4 n
{
$ s# Z/ L0 r ~9 ^ size=strlen(s)+1;
) g( ^2 t3 n9 q! I& l str=new char[size];' ], L$ L7 U; n1 f! d
if(str==0) throw "error";2 ~% `* U- C" \, n k; X
strcpy(str,s);
! _6 |; t8 O" |& \7 X/ {. d pre=new int[size];/ _0 l% Y2 k# m
if(pre==0) throw "error";
# }9 E. ?0 E3 Z9 _* ~( Z}</P>. [5 T y2 F% @0 i
< >String::String(const String&s)0 }. J7 D5 \% ^; R2 i2 q7 j. ^
{# l5 Z; ^ `7 ^. s" b
size=s.size;7 x6 |4 \+ m" D
str=new char[size];# ?; j: L# ^4 w* f1 }* ]
if(str==0) throw "error";
7 F* f! M' }1 r+ I. y: t strcpy(str,s.str);, t4 l- f3 y3 s% X( }; P' X; X
pre=new int[size];
8 y) z# K& b+ }( q# R if(pre==0) throw "error";& W2 X, X% H& m" B, S. x2 G
}</P>
: a3 u5 a7 ^! H0 o& u& K# y! k< >String& String: perator=(const String& s)
5 Q" ~6 ]5 ]; L* F{9 f6 i3 D% V7 ^: M$ [ g5 k, a
if(s.size!=size)4 Q" |- r, z1 V4 E# ]' ^
{& @6 u/ v" Z+ M- m; |7 Q
delete[] str;& U9 i2 k7 u/ y- ^5 f
str=new char[s.size];
2 i9 P: v% n) ~- E# ~6 v0 ? if(str==0)
& Y& s7 u: z& [0 k throw "error";& Z7 o2 q( [! @ N
size=s.size;8 u9 W; q8 Q' [ ?7 C
}
- Y/ }+ a" l% k% S2 r" h" r strcpy(str,s.str);0 ~/ I2 R6 q. |; x/ h$ Y
return *this;% o9 N' Y% ~- i0 W$ x9 J. N6 Y
}</P>9 a2 z" {" k9 M% X
< >String& String::change(int *p,int n)//将整型数组改成字符串* B9 |: A! _+ A+ K5 |7 K* x
{
$ I& s7 H, F0 L3 C* V$ O int i;
/ M0 {( n8 ~$ X3 u# C delete[] str;& c) C" E& }6 G) h
str=new char[n+1];* |0 ]: B& Q" n, Z4 p
for(i=0;i<n;i++)0 x0 M( g- J6 K$ j" F2 s
if(p>=0&&p<=9)( z3 R& r3 X! i- d0 F
str=p+48;
2 E0 u. Z( V5 X/ r else' e1 u6 k5 F1 L- v! O/ b
switch(p)4 v+ d! k# a, M: k! A0 ]
{
Q w4 q1 Q6 u' {) a* P case 10: str='A'; break;
3 x+ I( t, \. a* E case 11: str='B'; break;+ c9 o$ \& G" @! E
case 12: str='C'; break;- w! m* E, `2 w+ T s% l" i, J
case 13: str='D'; break;
2 a2 I' P& V: \1 n0 S case 14: str='E'; break;1 M* P) Q- t9 h
case 15: str='F'; break;$ i, I; F- E+ W) V( h( ?
}% I2 T" g/ e% O* b) y
str[n]='\0';( O1 {# o+ L8 C$ z; b g2 n; \7 x3 r
return *this;5 o# E2 M# F3 ?+ m. ?* [
}
: T0 Z$ E6 ^" @" Nint String::get()//输入一个字符串
) H8 B& x t5 K# @{ h" I# F; l p, V- v, O
char tmp[40000];6 s+ d3 H$ z* E b5 q9 u
in>>tmp;
: l: X9 q$ J% z* @2 b delete[] str;
* [/ \ T5 J6 C$ T$ D9 t5 I size=strlen(tmp)+1;4 |' Y: T' {2 @% L- d- @+ u5 F0 S
str=new char[size];
' _" N. v X$ y8 F) k if(str==0)* k1 K# l7 B0 A! n6 h: Z
throw "error";8 q0 N/ ~3 @' ~8 ~& ~- f H
strcpy(str,tmp);2 ^- p+ Q9 A% l( N9 Q
return size-1; e Q' o6 `" R& G; D) O' Q- h
}</P>
9 j9 H3 \$ f9 R* X# B3 C: a7 o< >void String::get(int *p)//将字符串改成整型数组
1 q+ o# ]/ y* J9 x( t% H) h{
! P; A1 w; g, _" E int i,j;& }0 R0 F5 d6 X5 e1 e
for(i=0,j=size-2;j>=0;i++,j--)1 S8 ~5 o2 c, x/ ]
if(str[j]>='0'&&str[j]<='9')* c1 [1 w; y9 M0 w
p=str[j]-48;+ y9 Q& R% X/ o4 {
else1 q9 `3 B. V* _+ e! F
{1 J: F+ ]' L5 }4 j: ^/ Q: N
switch(str[j]): M* K8 W( h3 H s/ ?# `
{
; q# A# H% @3 V6 P+ k! b, c case 'A': p=10; break;5 {( T% k( O3 D, A) ^& E& B
case 'B': p=11; break;
- w4 S" _5 m0 }9 _ case 'C': p=12; break;1 F x: Q; J- O- S2 J7 v
case 'D': p=13; break;
- s) H6 }" R& ~, V! P' y! k& W case 'E': p=14; break;
( @0 H3 S8 V( |! P% n case 'F': p=15; break;
* V: o* h0 u- o/ m/ X }& ?/ z/ G/ e" e3 m' X# B# E6 e
}
" U' j8 k- F. H: p v7 x}</P>
' M' h! Z! |( X; b8 B& b6 Q& ?< >void add(int *p,int &m,int *c,int k)//将一个数同其倒置数相加4 ~' v" y0 ^! R- ]( Z, X
{
( C. H* S: ~/ C1 M# Y. I7 g' A$ D int i,j,a=0;8 O) y7 d! X7 _7 o$ H' S. ?# l( X
for(j=m-1,i=0;j>=0 && i<m;j--,i++)
' t' j4 y- n0 d' Q$ X {: s" G% {8 |; c& m
c=p+p[j]+a;6 j, u. R- r) N; W( F3 p
a=0;- u0 |3 f3 M! }6 T. M1 e
if(c>=k)
& ^% s8 R* k9 _) y0 u {- Z' \. O3 N. [
a=c/k;
; C/ z: B. V* | M d6 f c=c%k;- c3 O D4 W# A0 K- X) y
}
8 n2 Y; H4 G# [3 { }
7 q% v4 g7 x8 M8 w if(a!=0)
. U* W; z+ \, k% n' Z7 l {
4 z" b' G' E/ V& v6 A- j+ t& F7 O c=a;- _& w. V4 j) I. H% Z6 F4 L, A7 a6 y
m++;: n' c, w' q2 n7 V6 [
}% h6 N. I0 [* R
}</P>
$ q$ x1 N P5 Z/ @1 P4 w< >bool match(int *a,int n)//判断是否为回文数2 l, D' m- H6 F9 c$ l, f6 _. w) H
{ U5 x( e% [* S7 e4 e
int i,j,h=0;) Q/ |, Q. m7 x
for(i=0,j=n-1;i<=n/2 && j>=n/2;i++,j--)
; e( c2 d( I: W! G. W% H% y6 z0 E {# j- G, I% q, s- l) g" m' K
if(a==a[j])) Z4 N6 I3 m1 i2 T& H
continue;# c( Z2 s) ?: [
h=1;, A$ q) I# R K
break;7 J1 H0 p p5 t5 U5 M
}
, [, S& ^0 u( ` l5 i$ Q( A7 q6 n if(h==0)
+ t* H$ }5 h9 t return true;
* [0 ~. G$ {$ _1 q6 b else , r" ^; ]& {% T
return false;
1 Y8 ?4 K, J1 v; D}' b9 |& a; c9 T3 _2 i: {: u
//clock_t start,finish;0 u9 I$ t. W6 @1 _ U; ~
int main()
* d3 [# D* y C: P# T{//start=clock();
0 D& K" `- K. h7 W if(in.fail()): |; V, b; ]2 i6 H+ \
{% X9 i; r( d8 C; Z9 |
cout<<"the input.txt is not exist!";
. s$ B" M* A2 P) }+ S6 E' a( } exit(1);' g1 r! ?% f5 c. U4 h
}
7 n' O* D I$ h7 |/ V- v* f) G String s,s1;, Q% m' `" P# n1 l1 i1 o
int n,g,k,*a,*c,m,h=0;4 V0 S. {" t. |7 ^
in>>k>>g;
2 @3 B! l) B6 z) n s.get();2 B0 r0 c v. v G8 R% c
! U; f9 W9 \3 [, c: [6 t* c n=s.length();% V4 R. G: ~1 a' r9 ^% X, w
m=n+g+1;) _5 E- u' g0 z9 b8 Z" I9 C# U
a=new int[m];1 w6 `" N5 e" J5 b3 ^. F& m
c=new int[m];$ G% {; p+ o5 [: v+ p
s.get(a);. v0 y+ }! b/ c
if(match(a,n))
0 J! o! `+ H6 }8 v- b* t/ ] {
$ R0 y! Z& m! k5 ~ out<<0<<endl;
$ ]# L! |" K& Q) R1 w e- s. P s.display();
+ e. e* y4 T$ c0 H: C, V! H0 e+ u7 Z return 1;
o8 B4 w. l6 P( H5 ? }
7 J, _. S; e4 }- s do; H0 [7 u; M- }1 X' h2 S- C1 g
{% F+ K# h1 i1 d, u
if(h%2==0)
- r, ~% s; r+ @* _9 E+ ~* ` add(a,n,c,k);
- N) X; `# T; A2 V: u else
& X2 @. ^$ T' M; w: x add(c,n,a,k);
( t1 s! ]8 ]; K h++;# X. R: K# d5 B; I/ r2 O+ ^- j
if(h>g)
/ C$ p6 E7 J' l- ]; X$ }" o break;
- r& g& S7 j! _- n, Z r }) M8 H4 q7 v- |! \3 @6 c
while(!match(a,n)&&!match(c,n));: o9 o: {3 h4 o9 x
if(h>g), W, y8 u/ [: |9 q% ~2 ~
out<<"No Solution!"<<endl;) K( R2 Y5 K6 U1 N
else
+ @4 ]' Z+ v% q& m# _- ] {
$ r3 a" |0 G: z; P/ t3 G$ L7 s out<<h<<endl;8 `% b+ S8 g8 b
if(h%2==0)
3 k$ r) p' L: m# i, k- k% J/ j# l. [ s1.change(a,n);; M0 s% i) V5 n# ]5 u
else& Y) @/ U4 X. L; Z" G
s1.change(c,n);# {- v' }) s5 g2 Q2 }0 C
s1.display();
0 W7 d) e8 L" k s8 G }
X9 F' l) j- y9 y" o8 n( k, }) ]* O delete[] a;# {; w6 }9 ^+ ^4 ^8 Y0 k
delete[] c;
0 y$ @8 ~8 m8 a# r5 e$ r// finish=clock();% ]3 o$ s3 Q& e& G/ H: E8 o
// cout<<finish-start<<endl;2 G7 \( k8 _- [ U7 V4 s
return 1;
# G' m0 h; ^# i: k0 \' f}</P> |
zan
|