T_T越来越水了,这次只做出A+B.
A题为了代码简单直接枚举(插入位置和插入字符)
1 //CF #286 Div.2 A 2 #include<vector> 3 #include<string> 4 #include<cstdio> 5 #include<cstring> 6 #include<cstdlib> 7 #include<iostream> 8 #include<algorithm> 9 #define rep(i,n) for(int i=0;i<n;++i) 10 #define F(i,j,n) for(int i=j;i<=n;++i) 11 #define D(i,j,n) for(int i=j;i>=n;--i) 12 using namespace std; 13 const int N=10086; 14 15 void read(int &v){ 16 v=0;int sign=1; char ch=getchar(); 17 while(ch<'0' || ch>'9') {if (ch=='-') sign=-1; ch=getchar();} 18 while(ch>='0'&&ch<='9'){v=v*10+ch-'0'; ch=getchar();} 19 v*=sign; 20 } 21 /****************tamplate***********************/ 22 23 string s,s1; 24 bool check(int pos,char ch){ 25 s1=""; 26 rep(i,pos) s1+=s[i]; 27 s1+=ch; 28 F(i,pos,s.length()-1) s1+=s[i]; 29 30 for(int l=0,r=s1.length()-1;l<r;l++,r--) 31 if (s1[l]!=s1[r]) return 0; 32 return 1; 33 } 34 35 int main(){ 36 ios::sync_with_stdio(false); 37 cin >> s; 38 int l=0,r=s.length(),pos=-1; 39 40 bool sign=1; 41 F(i,0,s.length()) 42 rep(j,26) if (check(i,j+'a')) { 43 cout <<s1<<endl; 44 return 0; 45 } 46 printf("NA"); 47 return 0; 48 }