题目解析
针对每组回答 求出每组回答得到的结论
解题思路
找规律 ...
对于每个回答 我们都有 是和否 两种回答
然后对于这样子的性质 可以联想到二进制
如图 当前的所有结论为 8 种
也就是 1 << 3
可是二进制对于这个来说好像又不怎么对
- 1: 将 看为, 看为。 然后 也就是 转化为十进制 是
- 2: 将 看为, 看为。 然后 也就是 转化为十进制 是
- 可是答案 是 也对不上
可是转念一想,如果不单单只有转换呢? 再加上点呢?
-
如果选择 方案1呢 , 那么就可以推出
看看 , 然后 也对上了
再看看其他的 也对的上
-
如果选择 方案2呢, 才对的上 用总方案数的话 就很难推出答案
看看 , 然后 也对上了
再看看其他的 也是对上的
所以 两种方案都行 只不过需要再加上一点
设 将给定回答转化为二进制之后为 x
- 如果 选择方案1 将 看为, 看为。 那么式子就是
- 如果 选择方案2 将 看为, 看为。 那么式子就是
代码
方案1
import java.io.*;
import java.math.*;
import java.util.*;
public class Main
{
public static void main(String[] args)
{
int n = sc.nextInt();
int m = sc.nextInt();
while (m-- > 0)
{
String str = sc.next().replace("y", "1").replace("n", "0");
out.println((1 << n) - Integer.valueOf(str, 2));
}
out.flush();
out.close();
}
static Scanner sc = new Scanner(System.in);
static PrintWriter out = new PrintWriter(System.out);
}
方案2
import java.io.*;
import java.math.*;
import java.util.*;
public class Main
{
public static void main(String[] args)
{
int n = sc.nextInt();
int m = sc.nextInt();
while (m-- > 0)
{
String str = sc.next().replace("y", "0").replace("n", "1");
out.println(Integer.valueOf(str, 2) + 1);
}
out.flush();
out.close();
}
static Scanner sc = new Scanner(System.in);
static PrintWriter out = new PrintWriter(System.out);
}