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

提交評論