計算無法被整除的第k大正整數

題面:

任務給定兩個數字,分別表示 n 和 k,要求給出無法被 n 整除的第 k 大的正整數。
例如 n = 3,k = 7,則前 7 個無法被 n 整除的正整數爲 [1 2 4 5 7 8 10],答案爲 10

輸入第一行一個整數 T,表示數據組數,不超過 1000。
之後 T 行,每一行給出兩個正整數,分別表示 n(2 ≤ n ≤ 1e9)、k(1 ≤ k ≤ 1e9)

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

sample input:
6
3 7
4 12
2 1000000000
7 97
1000000000 1000000000
2 1

sample output:
10
15
1999999999
113
1000000001
1

思路:

一道簡單的方程題,重要的是想明白答案ans和位置k的關係
認爲位置k是由第幾組和第幾位組成的,則
m/n=分組-1
m%n=m-m/n=組內位置
分組(n-1)+位置=k*
根據方程可以得出ans與k,n的關係並進行計算
需要注意的是除法計算的取整問題

#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
 int T;
 long long n,k;
 scanf("%d",&T);
 while(T--)
 {
  scanf("%lld %lld",&n,&k);
  long long ans;
  ans=(n*k)/(n-1);
  if(ans%n==0) cout<<ans-1<<endl;
  else cout<<ans<<endl;
 }
 return 0;
 } 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章