K-th Not Divisible by n

本文介绍了一个算法问题,即如何找到第k个不能被n整除的正整数。通过将数字分为长度为n的段,每段有n-1个数不被n整除,算法确定了k所在段并计算出具体数值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

You are given two positive integers nn and kk. Print the kk-th positive integer that is not divisible by nn.

For example, if n=3n=3, and k=7k=7, then all numbers that are not divisible by 33 are: 1,2,4,5,7,8,10,11,13…1,2,4,5,7,8,10,11,13…. The 77-th number among them is 1010.

Input
The first line contains an integer tt (1≤t≤10001≤t≤1000) — the number of test cases in the input. Next, tt test cases are given, one per line.

Each test case is two positive integers nn (2≤n≤1092≤n≤109) and kk (1≤k≤1091≤k≤109).

Output
For each test case print the kk-th positive integer that is not divisible by nn.

Example
Input
6
3 7
4 12
2 1000000000
7 97
1000000000 1000000000
2 1
Output
10
15
1999999999
113
1000000001
1

题意:就是让你求对于n这个数字,第k个不能整除n的数字是哪一个

解析:把数分为长度为n的若干段,那么每一段里面肯定有n-1个数字不能整除n,我们只要查一下第k个数字在那一段即可。

代码:

#include"stdio.h"
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
	{
        long long m,n,k,s;
        scanf("%lld %lld",&n,&k);
        m=k/(n-1);
        s=k-m*(n-1);
        if(k==m*(n-1))
		s--;
        s=s+m*n;
        printf("%lld\n",s);
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值