C++L1-7谷歌的招聘
C++編寫L1-7 谷歌的招聘 (20分)
2004 年 7 月,谷歌在矽谷的 101 號公路邊豎立了一塊巨大的廣告牌(如下圖)用於招聘。內容超級簡單,就是一個以 .com 結尾的網址,而前面的網址是一個 10 位素數,這個素數是自然常數 e 中最早出現的 10 位連續數字。能找出這個素數的人,就可以通過訪問谷歌的這個網站進入招聘流程的下一步。
自然常數 e 是一個著名的超越數,前面若干位寫出來是這樣的:e = 2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921… 其中粗體標出的 10 位數就是答案。
本題要求你程式設計解決一個更通用的問題:從任一給定的長度為 L 的數字中,找出最早出現的 K 位連續數字所組成的素數。
輸入格式:
輸入在第一行給出 2 個正整數,分別是 L(不超過 1000 的正整數,為數字長度)和 K(小於 10 的正整數)。接下來一行給出一個長度為 L 的正整數 N。
輸出格式:
在一行中輸出 N 中最早出現的 K 位連續數字所組成的素數。如果這樣的素數不存在,則輸出 404。注意,原始數字中的前導零也計算在位數之內。例如在 200236 中找 4 位素數,0023 算是解;但第一位 2 不能被當成 0002 輸出,因為在原始數字中不存在這個 2 的前導零。
輸入樣例 1:
20 5
23654987725541023819
輸出樣例 1:
49877
輸入樣例 2:
10 3
2468024680
輸出樣例 2:
404
這個問題中最難的一處是如何將一個字串轉換成一個數字,最開始我考慮到可以使用迴圈將字串的每一個字元剝離出來,然後*10+s[i],於是就有了下面的程式碼。
#include <bits/stdc++.h>
using namespace std;
int isZhengshu(string s2)
{//剝離字串,將字串轉換為數字
int sum = 0;
for(int i = 0;i <s2.size();i++)
{
sum = sum*10+(s2[i]-'0');
}
return sum;
}
bool isSushu(int num)
{//判斷這個數字是不是素數
if(num == 0||num == 1)//若該數為0或1,則直接返回錯誤
return false;
int m = sqrt(num);//將該數開2次根可以使迴圈變少
for(int i = 2;i < m;i++)
{
if(num%i==0)//若該數存在除1和本身以外的解則說明該數不是素數
return false;
}
return true;
}
int main()
{
int l, k, num = 0, flag = 0;
cin >> l >> k;
string s1, s2;
cin >> s1;
for(int i = 0; i< (l-k+1); i++)
{//判斷到l-k+1就到達最後一次
s2 = s1.substr(i,k);//substr擷取從i開始k個字元長度的字串
num = isZhengshu(s2);//將字串轉化為數字
if(isSushu(num))
{
flag = 1;
break;
}
}
if(flag == 1)
{
cout << s2 <<endl;
}
else
cout << "404" <<endl;
return 0;
}
後來通過查詢C++11的標準,發現有一些函式可以直接實現數字與字串的相互轉換,連結如下:
C/C++中字串與數字轉換
我使用到的是stoi函式,於是就有了下面這個程式碼
#include <bits/stdc++.h>
using namespace std;
bool isSushu(int num)
{
if(num == 0||num == 1)
return false;
int m = sqrt(num);
for(int i = 2;i < m;i++)
{
if(num%i==0)
return false;
}
return true;
}
int main()
{
int l, k, num = 0, flag = 0;
cin >> l >> k;
string s1, s2;
cin >> s1;
for(int i = 0; i< (l-k+1); i++)
{
s2 = s1.substr(i,k);
num = stoi(s2);
if(isSushu(num))
{
flag = 1;
break;
}
}
if(flag == 1)
{
cout << s2 <<endl;
}
else
cout << "404" <<endl;
return 0;
}
不過在使用stoi函式時出現了一個小問題,因為codeblocks不支援C++11的特性,所以在使用時需要將環境進行調整,如圖所示
相關文章
- PAT 乙級 1094 谷歌的招聘 (20分)---【素數 字串】谷歌字串
- 招聘
- 招聘人才的更好的方式
- It的招聘需求來啦
- Python求解谷歌高速公路招聘廣告:{ 無理數e中前十位連續的素數 }.comPython谷歌
- 2022招聘季|從招聘方的角度理解求職求職
- 周伯通招聘
- 最近招聘的一些思考
- 一道新奇的招聘題
- 【招聘資訊】
- 有贊招聘
- 挖財招聘
- 招聘招聘:歡迎各位猿長期到日本工作
- 招聘招聘:長期有坑與大家分享和交流!
- 谷歌 Stadia 的阿喀琉斯之踵谷歌
- 招聘管理系統
- 迅雷前端招聘啦前端
- 谷歌收錄批次查詢,教你批次查詢谷歌收錄的方法谷歌
- 秀一秀我們的招聘創意...
- 現在的測開招聘真逆天
- 招聘類app開發的功能需求分析APP
- 【北京】Matrix區塊鏈公司招聘golang工程師~持續招聘中~區塊鏈Golang工程師
- 谷歌開源的 GAN 庫–TFGAN谷歌
- 谷歌翻譯的UI設計谷歌UI
- 谷歌,被塵封的過去!谷歌
- Willow:谷歌最先進的量子晶片谷歌晶片
- 谷歌收錄批次查詢,谷歌收錄批次查詢的方法步驟谷歌
- win10谷歌瀏覽器怎樣設定用谷歌搜尋引擎 win10谷歌瀏覽器使用谷歌搜尋引擎的設定方法Win10谷歌瀏覽器
- 隨筆~招聘工作反思
- 愛庫存前端招聘前端
- 阿里巴巴招聘貼阿里
- 招聘資訊採集
- 拉勾招聘報告MCP
- IT人必看!2019 年招聘排名 TOP 10 的技能!
- 直截了當沒有廢話的招聘文章
- 物流人才招聘網站的商業模式網站模式
- 谷歌外掛谷歌
- 谷歌登入谷歌