골라서 처리하기
시간 제한1초메모리 제한128 MB
각 토큰을 정수, 실수, 문자열로 구분하고 기호가 정한 연산 결과를 케이스별로 출력합니다.
문제
각 데이터 집합은 여러 줄로 이루어진다. 첫 줄에는 값이 두 개 주어진다. 앞의 값은 1 이상 5 이하의 정수 이고, 뒤따르는 데이터 줄의 수를 나타낸다. 뒤의 값은 +, -, ^ 중 하나이고, 수행할 연산을 나타낸다. 이어지는 개의 줄에는 데이터가 하나씩 있으며, 양의 정수이거나 양의 실수이거나 길이가 10 이하인 문자열이다.
데이터의 종류는 다음 규칙으로 판별한다.
- 숫자만으로 이루어진 데이터는 정수다.
- 숫자가 하나 이상, 소수점 하나, 다시 숫자가 하나 이상 오는 데이터는 실수다.
- 나머지는 모두 문자열이다. 예를 들어
1a,12.34.56,.5,5.는 문자열이다.
기호가 +이면 정수인 데이터만 결과를 만든다. 그 정수의 각 자리 숫자를 더한 값을 출력한다.
기호가 -이면 문자열인 데이터만 결과를 만든다. 문자열에서 소문자 a를 모두 지운 결과를 출력한다. 대문자 A는 그대로 남는다.
기호가 ^이면 실수인 데이터만 결과를 만든다. 그 수를 지수 표기로 바꿔 출력한다. 지수 표기는 이렇게 만든다. 소수점을 뺀 숫자열에서 앞쪽 0과 뒤쪽 0을 떼어 유효 숫자 를 얻으면, 원래 값은 꼴이 된다. 가 1이면 을, 아니면 를 쓰고 그 뒤에 e와 지수 를 이어 붙인다. 지수가 음수면 앞에 -를 붙이고, 양수면 +를 쓰지 않는다. 2.53은 2.53e0, 25.3은 2.53e1, 0.253은 2.53e-1, 1.000은 1e0이 된다.
입력
첫 줄에 테스트 케이스의 수 가 주어진다. 이어서 각 테스트 케이스의 데이터가 주어진다.
각 테스트 케이스의 첫 줄에는 데이터 줄의 수 ()과 수행할 연산을 나타내는 기호 +, -, ^ 중 하나가 공백으로 구분되어 주어진다. 이어지는 개의 줄에는 각각 양의 정수, 양의 실수, 길이가 10 이하인 문자열 중 하나가 주어진다. 데이터에는 공백이 없다.
출력
테스트 케이스마다 한 줄을 출력한다. 줄은 Case #x:로 시작하고, 는 1부터 세는 테스트 케이스 번호다. 접두사 뒤에는 기호에 해당하는 종류의 데이터에서 나온 결과를 입력 순서대로 공백 하나로 구분해 붙이고, 접두사와 첫 결과 사이에도 공백을 하나 둔다.
해당 종류의 데이터가 하나도 없으면 접두사만 출력하고 뒤에 공백을 붙이지 않는다. 결과가 빈 문자열이어도 자리를 차지하므로 그 앞뒤의 구분 공백은 그대로 출력한다.