fork(1) download
  1. #include<iostream>
  2. #include<string>
  3. #include<cstring>
  4. #include<sstream>
  5. #include<cassert>
  6. using namespace std;
  7. int main(){
  8. int T,N,myi;
  9. cin>>T;
  10. assert(T>=0&&T<1001);
  11. char c[94],p[94];
  12. string s,fhalf,shalf,sans;
  13. s.resize(1000000),fhalf.resize(1000000),shalf.resize(1000000),sans.resize(1000000);
  14. while(T--){
  15. cin>>N;
  16. assert(N<95);
  17. for(int i=0;i<N;i++)
  18. cin>>c[i]>>p[i];
  19. cin>>s;
  20. for(int i=0;i<N;i++){
  21. size_t found = s.find_first_of(c[i]);
  22. while(found!=std::string::npos){
  23. if(i>0&&c[i]==p[i-1])
  24. break;
  25. else{
  26. s[found] = p[i];
  27. found = s.find_first_of(c[i],found+1);
  28. }
  29.  
  30. }
  31.  
  32. }
  33. size_t fdot = s.find('.');
  34. if(fdot!=std::string::npos){
  35. fhalf = s.substr(0,fdot);
  36. shalf = s.substr(fdot);
  37. size_t flast = shalf.find_last_of("123456789");
  38. size_t ffirst = fhalf.find_first_of("123456789");
  39. if(flast!=std::string::npos&&ffirst!=std::string::npos)
  40. sans = fhalf.substr(ffirst)+shalf.substr(0,flast+1);
  41. else if(ffirst!=std::string::npos)
  42. sans = fhalf.substr(ffirst);
  43. else if(flast!=std::string::npos)
  44. sans = shalf.substr(0,flast+1);
  45. else
  46. sans = '0';
  47. cout<<sans<<endl;
  48. }
  49. else{
  50. stringstream(s)>>myi;
  51. cout<<myi<<endl;
  52. }
  53.  
  54. }
  55. return 0;
  56. }
  57.  
Success #stdin #stdout 0s 3440KB
stdin
1
94
! 3
" 4
# 5
$ 6
% 7
& 8
' 9
( 0
) 1
* 2
+ 3
, 4
- 5
. 6
/ 7
0 8
1 9
2 0
3 1
4 2
5 3
6 4
7 5
8 6
9 7
: 8
; 9
< 0
= 1
> 2
? 3
@ 4
A 5
B 6
C 7
D 8
E 9
F 0
G 1
H 2
I 3
J 4
K 5
L 6
M 7
N 8
O 9
P 0
Q 1
R 2
S 3
T 4
U 5
V 6
W 7
X 8
Y 9
Z 0
[ 1
\ 2
] 3
^ 4
_ 5
` 6
a 7
b 8
c 9
d 0
e 1
f 2
g 3
h 4
i 5
j 6
k 7
l 8
m 9
n 0
o 1
p 2
q 3
r 4
s 5
t 6
u 7
v 8
w 9
x 0
y 1
z 2
{ 3
| 4
} 5
~ 6
!!!
stdout
111