美团0325笔试
第一题
题目描述:
定义1-9的置换首先给出你一个整数,可能为正也可能为负,这个数字中仅包含数字1-9,现在定义一个1-9的置换,即指定将整数中的某个数字按顺序变换为另一个数字,请你输出变换以后的数字是多少
未AC
第二题
题目描述:
最外面的边缘是白色。最外层的圆是黑色,往里一层是白色,再往里是黑色,以此类推……输入N表示所有圆的个数,a[i]表示第i个圆的半径(1<=i<=N)。求黑***域的总面积(结果四舍五入)
通过率45%
解题思路:
分为两类:内部实心圆全黑和全白,然后分别数学计算
代码:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int num = in.nextInt(); int[] circler = new int[num]; for(int i=0;i<num;i++){ circler[i] = in.nextInt(); } double blackarea = 0; if(num%2 == 1){ //内部为黑圆 blackarea += Math.PI *( circler[0]*circler[0]); for(int i =1; i< num-1; i+=2){ blackarea += Math.PI *( circler[i+1]*circler[i+1]- circler[i]*circler[i] ); } }else { for(int i= 0;i<num-1;i+=2){ blackarea += Math.PI *( circler[i+1]*circler[i+1]- circler[i]*circler[i] ); } } //要四舍五入 System.out.printf("%.5f",blackarea); } }
第三题
题目描述:
一个序列是有趣的需要满足当且仅当这个序列的每一个元素ai 满足i 整除ai 。
现在给定一个长度为n的数组,问这个数组有多少个非空的子序列是有趣的,由于答案可能比较大,只需要输出在模998244353意义下答案的就行了。一个长度为n的数组的非空子序列定义为从这个数组中移除至多n-1个元素后剩下的元素有序按照原顺序形成的数组。比如说对于数组[3,2,1],它的非空子序列有[3],[2],[1],[3,2],[3,1],[2,1],[3,2,1]。
超时,通过率18%
解题思路:
用dp[i]表示长度为i的“有趣”子序列的个数,求取长度为i的“有趣”子序列个数dp[i],并记录对应的所有末尾的下标index[1-j],再遍历所有末尾的下标index[1-j],每次找到index[j]后的所有能被(i+1)整除的数则dp[i+1]加一。通过dp[i]算出dp[i+1]。以此类推
import java.util.Arrays; import java.util.Scanner; public class Main { //非空子序列,模998244353 //5 // 1 1 1 1 2 9种 public static void main(String[] args) { Scanner in = new Scanner(System.in); int num = in.nextInt(); int[] arrays = new int[num]; //动态规划 int[] dp = new int[num]; dp[0] = num; int[][] index = new int[num][num]; for(int i=0;i<num;i++){ Arrays.fill(index[i],-1); arrays[i] = in.nextInt(); index[0][i] = i; } //先找出所有子序列,后判断是否有趣 //还有一个参数记录所有末尾字符的下标,不去重复 // dp[i] = dp[i-1] + i的倍数; for(int j = 1;j < num-1;j++){ int m = 0; for(Integer tempnum : index[j-1]){ if(tempnum == -1){ break; } for(int k = tempnum +1;k<num;k++){ if(arrays[k] % (j+1) == 0){ dp[j] += 1; index[j][m++] = k; } } } } int result = 0; for(int i =0;i<num;i++){ result += dp[i]; } System.out.println(result);//换行 } }
第四题
题目描述:
小仓酷爱射击运动。今天的小仓会进行N轮射击,已知每次击中靶心的概率为p/q,每当小仓击中靶心,如果是连续k次击中,那么小仓会获得a[k]的得分。小仓希望知道最后她的期望得分是多少。
未AC
#美团点评2020春招##美团##笔试题目#