• 筆趣閣 > 都市小說 > 重生學神有系統 > 第246章 Vigenère密碼和國王游戲

    第246章 Vigenère密碼和國王游戲(2 / 2)

    ⊕運算不區分大小寫,加密結果套用明文的大小寫格式。

    當M的長度大于K的長度時,重復使用K。

    問題:給出密鑰和密文,求原本的明文。

    如果讓江寒給這道題的難度評級,大約只肯給出1星。

    這么簡單的題目,約等于白給。

    解題思路十分明確,找出加密規則⊕的數學描述,然后使用⊕的逆運算,代入密鑰K和密文C,求出明文M。

    如果實在不想麻煩,也可以將規則表建立成一個字符數組,然后反向查表。

    可以說,只要認真訓練過的選手,這道題沒理由會丟分。

    江寒迅速在草稿紙上,將流程圖畫了出來,然后編寫C++代碼。

    5分鐘搞定代碼,然后在test.in中編制了10組測試數據,一一代入進行模擬計算。

    輸出的結果與紙筆計算十分吻合。

    此題結束。

    由于linux系統區分大小寫,所以江寒在解題的過程中,除了題目中有規定的輸出文本等,程序中使用的所有變量等等,一律使用小寫字母。

    接下來是第二題:國王游戲

    N個大臣排成一隊,國王站在隊伍最前方,每個人左右手上,分別寫有一個數字。

    國王按照規則,賜予每個大臣一定數量的金幣。

    每個大臣所能得到的金幣數,等于排在該大臣之前所有人左手數字之乘積,除以其右手的數字,結果向下取整。

    問題是,如何調整大臣的順序,才能讓獲得的金幣最多的那個人,得到的金幣盡可能的少。

    注意,國王始終站在隊伍最前方。

    然后在輸入數據說明中,有如下提示。

    對于20%的數據,有1≤n≤10,0<a、b<8;

    對于40%的數據,有1≤n≤20,0<a、b<8;

    對于60%的數據,有1≤n≤100;且答案不超過10^9;

    對于100%的數據,有1≤n≤1,000,0<a、b<10000。

    這道題的難度比第一題稍有提高,但也不算特別費勁。

    此題的坑點在于,輸入的數據有可能很大,使用通常的編程方式,只能通過前40%的數據校驗,想得高分,就必須使用高精度編程。

    解題思路就是窮舉法。

    針對給出的大臣數N,以及給出的N+1組左右手數字a、b,計算每種可能的站位情況所對應的金幣最大值m,再求出集合M={m1,m2,m3,……mk}中的最小值。

    由于N個大臣共有N!種站位,所以一旦N足夠大,計算量將是非常恐怖的。

    這道題一共10個檢查點,每個檢查點10分。

    比賽對于程序運行時間的限制,是每個檢查點不超過1秒。

    對于運行空間的限制,是每個程序使用的內存,不得超過128兆。

    無論在哪個檢查點超時或者輸出錯誤,都會扣掉該點的分值。

    計算機打分的時候,一般會輸入強弱不同的10組測試數據。

    遇上小點的數字,比如本題中前20%的數據,只要程序沒有邏輯錯誤,基本都能通過測試,拿到分數。

    但當N稍微大一點的時候,使用暴力搜索算法,很可能會超過1s的時限。

    所以,一定要找出規律,對輸入的N組a、b進行預處理。

    江寒在紙面上推演了一下,很快得到了一個猜想:當大臣們按a×b的積升序排序時,得到的序列就是最優的方案。

    那么原本的暴力搜索程序,就可以改造一下了。

    第一步,排序,求出最優方案時的隊列,第二步,計算該情況下的M值。

    毫無疑問,這個算法的效率遠比暴力搜索更高,其運行時間取決于使用的排序算法的時間復雜度。

    江寒先編制了一個最樸素的暴力搜索算法,測試了一下,驗證程序沒有邏輯錯誤后,另存了一份。

    然后又按照改進后的思路,修改了一下代碼,用快速排序整理隊列,然后計算M值。

    接下來就是比較好玩的東西了。

    對拍。

    最新小說: 蜀山:滅絕 透視賭石王 離婚后,娶了前妻的天后小姨 LOL:什么叫折磨流選手啊!蘇墨阿布 從私吞千萬億舔狗金開始當神豪 婚紗追星網暴我?京城世家齊出手 當網絡皇帝,享缺德人生 鶴飲春風 戰國生存指南 斗羅:制霸斗羅從召喚孔德明開始
    亚洲国产精品嫩草影院久久