京东第一批笔试两道AC代码记录贴
提前批简历直接被挂了,笔试记录贴 第一题:计算1/5-1/10+1/15-...-1/(5*2n),四舍五入并且保留四位小数; import java.util.*; class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); double sum = 0; int mul = 1; for(int i=1; i<2*n+1; ++i){ sum += (double)mul/(5*i); mul *= -1; } String format = new DecimalFormat("#.0000").format(sum); System.out.println(format); } }
第二题:计算[N,M]这个区间中满足条件的正整数的个数,其中条件为:对于一个正整数,去掉任意一位后既是回文数,也是素数,则此整数满足要求。(注:这题当判断素数加一个条件小于2直接返回false,准确率由31%->91%,当判断回文数加一个条件整数小于0返回false,准确率由91%->AC) import java.util.*; class Main{ static Map<Integer,Boolean> primeMap = new HashMap<>(); static Map<Integer,Boolean> palindromeMap = new HashMap<>(); public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); //记忆化搜索,对于指定数字我们只需要计算一次,然后存储进入hashmap中即可判断其是否是素数或者回文数 int cnt = 0; for(int tmp = n; tmp<=m; tmp++){ //取出一个数字,并且进行拆分和判断,当有一个满足要求的时候,我们就将满足要求的个数加1,并且将计算到的回文串数字存储进map进行加速 String s = String.valueOf(tmp); int len = s.length(); for(int i=0;i<len;++i){ String stmp = "0"; if(i==0)stmp = stmp + s.substring(1,len);//第0位需要特殊处理 else if(i<len-1){ stmp = stmp + s.substring(0,i)+s.substring(i+1,len); }else{ stmp = stmp + s.substring(0,len-1); } int itemp = Integer.parseInt(stmp); if(isPrime(itemp)&&isPalindrome(itemp)){ cnt++; break; } } } System.out.println(cnt); } public static boolean isPrime(int x){ if(x<2)return false; if(primeMap.containsKey(x)&& primeMap.get(x))return true; if(primeMap.containsKey(x)&&!primeMap.get(x))return false; int i=2; while(i<=Math.floor(Math.sqrt(x))&&(x%i!=0)){ i++; } if(i>Math.floor(Math.sqrt(x))) { primeMap.put(x, true); return true; } else { primeMap.put(x, false); return false; } } public static boolean isPalindrome(int x){ if(x<0)return false; if(palindromeMap.containsKey(x)&& palindromeMap.get(x))return true; if(palindromeMap.containsKey(x)&&!palindromeMap.get(x))return false; String tmp = String.valueOf(x); int len = tmp.length(); int i=0, j=len-1; while(i<=j){ if(tmp.charAt(i)!= tmp.charAt(j)){ palindromeMap.put(x,false); return false; } i++; j--; } palindromeMap.put(x,true); return true; } }
#笔试题目##京东#