코드포스

[Codeforces Round #786 (Div. 3)] C. Infinite Replacement

거북이같은곰 2022. 5. 4. 20:07

 

 


※ 문자열 s에 a가 있으면 'a'를 문자열 t로 대체 할 수 있다.(s = aaaa, t = abc -> abcaaa)

※ t가 "a" 라면 문자열의 수도 변하지 않고 그대로이기 때문에 기존의 s 문자 하나만 만들 수 있다 (1을 출력)

※ 문자열 t에 a가 하나 이상 들어가 있으면 t에 포함된 a를 통해 새로운 문자열을 무한히 만들 수 있다.

   (s = aaaa, t = abc -> abcaaa -> aabcaaa -> abcabcaaa      -1을 출력)

※ t에 a가 포함되지 않았으면 기존 문자열 s의 'a'의 개수만큼 새로운 문자열을 만들 수 있다.

  (t에 a가 포함되지 않았으면 t = b로 생각해도 무방하다. 문자 개수당 2가지 선택지가 있고 이 경우의 수는 2^n

   aaa -> a와 b의 두가지 선택 2 * 2 * 2 = 2^3)

 

1. t가 == 'a'라면 1을 출력

2. t에 'a'가 포함되 있으면 -1을 출력

3. 그외의 모든 경우는 2^n을 출력

 

long타입

 


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.StringTokenizer;

public class Main {
 	public static void main(String arg[]) throws IOException {
 		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 		StringBuilder sb = new StringBuilder();
 		int T = Integer.parseInt(br.readLine());
 		while(T --> 0) {
 			String s = br.readLine();
 			String t = br.readLine();
 			if(t.equals("a")) {
 				sb.append(1).append('\n');
 			}
 			else if(t.contains("a")) {
 				sb.append(-1).append('\n');
 			}
 			else {
 				long a = (long)Math.pow(2, s.length());
 				sb.append(a).append('\n');
 			}
 		}
 		System.out.println(sb);
 	}
}