2018京东校招技术笔试编程题汇总_第1页
2018京东校招技术笔试编程题汇总_第2页
2018京东校招技术笔试编程题汇总_第3页
2018京东校招技术笔试编程题汇总_第4页
2018京东校招技术笔试编程题汇总_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1、回文分析暴力枚举一下check回文,可以确定出最后答案的一半,就可以得到答案了。参考代码#include using namespace std;bool isPalindrome(string s) int i = 0, j = s.size() - 1; while(i s; string add; int i, j; for(i = 0; i = 0; j-) add += sj; s += add; cout s.size() endl;2、两个子串分析暴力枚举计算字符串前缀后缀相等的最长长度,然后拼接一下就是结果。参考代码#include using namespace std;

2、string s;int main() cin s; int l = s.size(), m = 0; for(int i = 1; i l; i+) if(s.substr(0, i) = s.substr(l - i, i) m = i; cout s.substr(0, l - m) + s endl; return 0;3、括号匹配方案分析这个题字符串长度不长,可以直接爆搜。有一种代码比较简单的解法,挨着累计(的个数,遇到)就完成一次匹配,把情况数乘进答案。本质是把题目所说的移除操作做了一个等价的变化。参考代码#include using namespace std;string s;

3、int main() cin s; int ans = 1, cnt = 0; for(int i = 0; i s.size(); i+) if(si = () cnt+; else ans *= cnt; cnt-; cout ans endl;4、疯狂的序列分析范围比较大,考虑二分答案,等差数列求和来check。参考代码#include using namespace std;long long n;int main() cin n; long long l = 1, r = 2000000000LL, mid; while(l = n) r = mid; else l = mid +

4、1; cout l endl; return 0;5、神奇数分析注意到r - l不会特别大,直接枚举范围内的数,然后暴力check。暴力check的时候注意到所有数位和最大只有81,所以会比较快。参考代码一#include using namespace std;bool check(int n) char s11; int cur = 0, t = 0; while(n 0) scur = n % 10; t += scur+; n /= 10; if(t % 2) return false; t /= 2; bool ok42 = 0; oks0 = true; for(int i = 1

5、; i = 0; j-) if(okj & j + v l r; for(int i = l; i = r; i+) if(check(i) res+; cout res 0) scur = n % 10; t += scur+; n /= 10; if( t % 2 = 1 ) return false; t /= 2; boolean ok = new boolean42; oks0 = true; for(int i = 1; i = 0; j-) if(okj & j + v b) ? a : b; public static void main(String args) Scanne

6、r in = new Scanner(System.in); int res = 0; int l = in.nextInt(); int r = in.nextInt(); for(int i = l; i = r; i+) if(check(i) res+; System.out.println(res); 6、求幂分析裸暴力好像只能拿20%的分我们考虑去枚举n范围内的所有i,然后处理出i的幂那些数。考虑对于i x, 我们需要计算满足 (i x) c = (i y) d的数量,其中i x, i y = n. 这些我们可以通过预处理出来。然后对于(i x) c = (i y) d 其实意味着

7、x c = y d, 意味着(x / y) = (d / c), 其中x, y我们可以在预处理之后枚举出来,于是我们就可以借此计算出n范围内有多少不同这种c和d去满足等式。其实就等于 n / max(x / gcd(x, y), y / gcd(x, y),然后都累加进答案。gcd()表示最大公约数。中间可能产生重复枚举,我们用一个set或者hash容器标记一下就好。以上枚举对于2sqrt(n)。最后对于大于sqrt(n)的部分,每个的贡献都是n。参考代码一#include using namespace std;const int mod = 1e9 + 7;set S;int n;int

8、main() cin n; long long res = 1LL * n * n % mod; for(int i = 2; i * i = n; i+) if(S.find(i) != S.end() continue; long long tmp = i; int cnt = 0; while(tmp = n) S.insert(tmp); tmp = tmp * i; cnt+; for(int x = 1; x = cnt; x+) for(int y = 1; y = cnt; y+) int g = _gcd(x, y); int tmpx = x / g; int tmpy =

9、 y / g; res = (res + n / max(tmpx, tmpy) % mod; res += 1LL * (n - S.size() - 1) * n; res %= mod; cout res b) ? a : b; public static long gcd(long a,long b) return (a % b = 0) ? b : gcd(b,a%b); public static void main(String args) Scanner in = new Scanner(System.in); long n = in.nextInt(); long ans =

10、 (long)1*n*(n*2-1) % MOD; Set set = new HashSet(); for (int i = 2; i*i = n; i+) if ( set.contains(i) continue; long tmp = i; int cnt = 0; while(tmp = n) set.add(int)tmp); tmp = tmp * i; cnt+; for(int k = 1; k = cnt; k+) for(int j = k + 1; j = cnt; j+) ans = (ans + n / (j / gcd(k, j) ) * (long)2 ) %

11、MOD; System.out.println(ans); 7、购物车function add(items) var tbody = document.getElementById(jsTrolley).getElementsByTagName(tbody)0; (items | ).forEach(function (item) var tr = document.createElement(tr); tr.innerHTML = + + + item.price.toFixed(2) + 删除; tbody.appendChild(tr); ); update(); f

12、unction bind() var table = document.getElementById(jsTrolley); table.addEventListener(click, function (event) var el = event.target; if (el.tagName.toLowerCase() = a) tr = el.parentNode.parentNode; tr.parentNode.removeChild(tr); update(); ); function update() var table = document.getElementById(jsTrolley); var tbody = table.getElementsByTagName(tbody)0; var tfoot = table.getElementsByTagName(tfoot)0; var tr = .slice.call(tbody.getElementsByTagNa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论