日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[week13] TT的神秘礼物2

發布時間:2024/5/14 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [week13] TT的神秘礼物2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 題意
    • Input
    • Output
    • 輸入樣例
    • 輸出樣例
    • 提示
  • 分析
  • 總結
  • 代碼

題意

在你們的幫助下,TT 輕松地完成了上一個神秘任務。

但是令人沒有想到的是,幾天后,TT 再次遇到了那個神秘人。

而這一次,神秘人決定加大難度,并許諾 TT,如果能夠完成便給他一個獎勵。

任務依舊只給了兩個數字,分別表示 n 和 k,不過這一次是要求 TT 給出無法被 n 整除的第 k 大的正整數。

例如 n = 3,k = 7,則前 7 個無法被 n 整除的正整數為 [1 2 4 5 7 8 10],答案為 10。

好奇的 TT 想要知道獎勵究竟是什么,你能幫幫他嗎?

Input

第一行一個整數 T,表示數據組數,不超過 1000。

之后 T 行,每一行給出兩個正整數,分別表示 n(2 ≤ n ≤ 1e9)、k(1 ≤ k ≤ 1e9)。

Output

對于每一組數據,輸出無法被 n 整除的第 k 大的正整數。

輸入樣例

6
3 7
4 12
2 1000000000
7 97
1000000000 1000000000
2 1

輸出樣例

10
15
1999999999
113
1000000001
1

提示


分析

  • 題目分析

這道題不再是拆分,而是在正整數序列中根據規律找數字。

稍微演算就會發現,第k個不被整除的數實際上是完整數列中第 (k + 該數字之前所有可被整除數的個數)個數字,其實答案就是(k + 該數字之前所有可被整除數的個數),因為正整數序列 從1開始。

問題:
最開始的思路就是累加判定第k個不被整除數究竟在第幾個可被整除數的前面,最后直接輸出在前面所有可被整除數個數 + k。

不過這種做法會tle。其實我在檢驗的時候就感覺到了這種做法是肯定會超時的,但是我還是拿到vj上試了一下,果然超時。那么就需要簡化該思路了。

顯然該思路是正確的,那么簡化這個思路的算法該如何做呢?

我想到的是列不等式。因為這個規律顯然可以利用數學公式列出,那么只要讓計算機知道這個數學公式如何解就可以了。

設第k個不被整除數在第i個可被整除數的前面,可化為公式:k + i - 1 < n * i

則轉換后得到關于i的不等式為:(k - 1) / (n - 1) < i

而答案即為:k + i - 1


  • ***問題 ***
  • 一直wa沒找到原因,后來發現是輸出格式(?)wa 的輸出格式是先輸出最大的那一個,再輸出中間的1或2,最后再輸出一個1或2;ac的輸出格式是先輸出前k - 1個1或2,最后輸出最大的那一個。

  • 總結

  • 想出簡化辦法的時候還是很開心的hhh這道題解決還是很迅速的

  • 代碼

    // // main.cpp // lab2 // //#include <iostream> using namespace std;int main() {ios::sync_with_stdio(false);int t = 0,n = 0,k = 0,m = 0;cin>>t;while( t-- ){cin>>n>>k;m = (k - 1) / (n - 1); //k + i - 1 < n * i ——> (k - 1) / (n - 1) < icout<<k + m<<endl; //ans = k + i - 1}return 0; }

    總結

    以上是生活随笔為你收集整理的[week13] TT的神秘礼物2的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。