Codeforces Round 958 (Div. 2)A到D详细(c++,python)

竞赛链接:Dashboard - Codeforces Round 958 (Div. 2) - Codeforces

ProblemA

题目链接:Problem - A - Codeforces

简单题解加代码:

Python:
def II():
    return int(input())
def MII():
    return map(int, input().split())
'''
模拟方法
'''
def func_1(n: int, k: int) -> int:
    res = 0
    cur = 1
    while cur < n:
        res += 1
        cur += k - 1
    return res
'''
数学方法
'''
def func_2(n: int, k: int) -> int:
    return (n - 1 + k - 2) // (k - 1)
            
def main():
    t = II()
    res = []
    '''
    操作:是说给一个整数n,可以把n分成最多k项,每项相加的值为n,
        此时操作次数加一
        分成的k项每项也可以进行相同的操作,
    结果:把n分成n个1
    要求:求达到结果的最小操作次数
    '''
    for _ in range(t):
        n, k = MII()
        res.append(func_2(n, k))
    for r in res:
        print(r)

if __name__ == "__main__":
    main()

C++:
#include <iostream>
#include <vector>

using namespace std;
//模拟方法
int func_1(int n, int k){
    int res = 0;
    int cur = 1;
    while (cur < n){
        res++;
        cur += k - 1;
    }
    return res;
}
//数学方法
int func_2(int n, int k){
    return (n - 1 + k - 2) / (k - 1);
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    int t;
    cin >> t;
    /*
    操作:是说给一个整数n,可以把n分成最多k项,每项相加的值为n,
        此时操作次数加一
        分成的k项每项也可以进行相同的操作,
    结果:把n分成n个1
    要求:求达到结果的最小操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值