阿里3月23日笔试
阿里3月23日笔试
第一题
输入一个整数n 1<n<10^9
输出一个整数
找出其所有非空子集中所有元素个数之和,然后对10^9+7取模,输出结果
例如输入2,有{1},{2},{1,2}3个非空子集,所有元素个数之和为4
输出结果为4
思路
用int肯定会超,需要用到BigInteger
对于输入n,求得所有元素之和为n*2^(n-1)
然后再对10^7+7取模即可
代码
public class Solution1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String n = sc.next();
BigInteger in = BigInteger.valueOf(Long.parseLong(n));
BigInteger num = f(in);//种数
BigInteger x = BigInteger.valueOf(10).pow(9).add(BigInteger.valueOf(7));
System.out.println(num.mod(x));
}
private static BigInteger f(BigInteger n) {
return n.multiply(BigInteger.valueOf(2).pow(n.intValue()-1));
}
} 第二题
输入n,m两个整数代表n行m列
下面输入n行字符串,每个字符串都包含m个字符(只含有'.','#','E','S')
其中S代表起点,E代表终点,#代表无法通过
从起点出发,可向左,向右,向上,向下移动一步
也可按如下中心对称移动,也只算移动一步
X(i,j)→ X‘(n+1-i,m+1-j)
求从起点到终点最少需要移动几步
示例输入
4 4 #S.. E#.. #... ....
输出
4
说明
先中心对称到达(4,3),然后向上一步,向右一步,中心对称到达终点
第2题我还没做完到时间了😭
#阿里笔试2020第二场##笔试题目##阿里巴巴#

深信服公司福利 832人发布