Google 公路面試題

讓我們把時(shí)間撥回到 2004 年 7 月。

101 號公路是硅谷的動(dòng)脈,因?yàn)檫@條路邊全部是大家耳熟能詳?shù)母鞣N科技巨頭,2004 年那時(shí)候的巨頭包括 Adobe,微軟,思科,甲骨文,Yahoo,eBay,太陽微電腦等等。

現(xiàn)在的巨頭谷歌,當(dāng)時(shí)雖然已經(jīng)是明星中的明星,但是還要再等一個(gè)多月,才能在納斯達(dá)克上市。而下圖的 Youtube,F(xiàn)acebook,那時(shí)候還不存在呢。

總之呢,就是這么多巨頭聚集在這條公路兩旁,同時(shí)也吸引了更多的初創(chuàng)企業(yè)聚集在這條公路兩旁。結(jié)果就是每天有海量的員工開車在這條公路上下班,然后有很大的概率,在交通高峰期被堵在路上。然后呢,就像問題描述中的那樣,2004 年 7 月,這條公路邊突然出現(xiàn)了一塊巨大的廣告牌。

內(nèi)容那是相當(dāng)?shù)暮唵未直?,這句話翻譯一下是這樣的:{e 的連續(xù)數(shù)字中最先出現(xiàn)的 10 位質(zhì)數(shù)}.com。
如果你不知道 e,或者忘記了 e 的定義,那么我們先大概回憶一下,e 的中文名字叫“自然常數(shù)”。e 是什么呢,就是一個(gè)比 1 大,但是無限接近于 1 的數(shù)(這個(gè)數(shù)只比 1 大一點(diǎn)點(diǎn),這一點(diǎn)點(diǎn)是無窮?。?,這個(gè)數(shù)的無窮大次冪,就是 e。e=\lim _{n \rightarrow \infty}\left(1+\frac{1}{n}\right)^{n}e 寫出來大概是這樣的:
e ≈ 2.7182818284 5904523536 0287471352 6624977572 4709369995 9574966967 6277240766 3035354759 4571382178 5251664274 2746639193 2003059921 8174135966 2904357290 0334295260……

可以無限這樣寫下去,下面這個(gè)網(wǎng)站把 e 的前 2 百萬數(shù)字都列出來了,你可以感受下:
https://apod.nasa.gov/htmltest/gifcity/e.2mil
那么這個(gè)廣告牌的意思就清楚了,內(nèi)容是一個(gè)網(wǎng)址,這個(gè)網(wǎng)址是一個(gè) 10 位數(shù)字,這個(gè)數(shù)字是一個(gè)質(zhì)數(shù),而且是 e 中最先出現(xiàn)的那個(gè) 10 位質(zhì)數(shù)。

題目中問這個(gè)數(shù)學(xué)題怎么解。我覺得這個(gè)算不上是數(shù)學(xué)研究,因?yàn)闆]啥數(shù)學(xué)方面的技術(shù)含量,用程序來解決這種問題更實(shí)際。

#include <iostream>
#include <string>

bool is_prime(uint64_t n)
{
    if (n == 0 or n == 1) return false;
    if (n == 2 or n == 3) return true;
    if (n % 6 != 1 and n % 6 != 5) return false;

    for (uint64_t i = 5; i * i <= n; i += 6) 
        if (n % i == 0 or n % (i + 2) == 0)
            return false;

    return true;
}


int main()
{
    std::string str_e { "718281828459045235360287471352662497757247093699959574"
    "9669676277240766303535475945713821785251664274274663919320030599218174135"
    "96629043572900334295260" };

    for (size_t i = 0; i < str_e.length() - 10; i++) {
        auto str_num = str_e.substr(i, 10);
        if (is_prime(std::stoull(str_num))) {
            std::cout << i << ": " << str_num << std::endl;
            break;
        }
    }
}

所以,答案出現(xiàn)在小數(shù)點(diǎn)后第 98 位(從 0 開始),為 7427466391。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,824評論 18 399
  • 前言 本文中的題目來源于網(wǎng)上的一篇文章《百度搜索 “Java面試題” 前200頁》,但該文章里面只有題目,沒有答案...
    nnngu閱讀 650評論 0 5
  • 【程序1】 題目:古典問題:有一對兔子,從出生后第3個(gè)月起每個(gè)月都生一對兔子,小兔子長到第三個(gè)月后每個(gè)月又生一對兔...
    磨礪營閱讀 745評論 0 6
  • 目錄 常見算法不用中間變量,用兩種方法交換A和B的值求最大公約數(shù)判斷質(zhì)數(shù)字符串逆序輸出排序相關(guān)算法選擇排序冒泡排序...
    路飛_Luck閱讀 10,707評論 4 25
  • 之前去XXXX公司面試被問到“怎樣使用performSelector傳入3個(gè)以上參數(shù),其中一個(gè)為結(jié)構(gòu)體?”當(dāng)時(shí)年少...
    Miu七七閱讀 8,033評論 2 16

友情鏈接更多精彩內(nèi)容