请问有人知道这哪里错了吗

P1150 Peter 的烟

csf02vv03 @ 2023-01-29 17:45:17

#include<iostream>
using namespace std;
int main(){
    int n, k;
    cin >> n >> k;
    int sum = n, sump = 0, m;
    while (n >= k){
        n = n % k;
        sump = sum - (n * k);
        m = n + sump;
        sum = sum + n;
        n = m;
    }
    cout << sum;
    return 0;
}

1 AC

23 TLE

4~10 WA

求解


by Kevin_Mamba @ 2023-01-29 17:53:20

@ok142857

第一个错误:

        n = n / k;

by Kevin_Mamba @ 2023-01-29 18:02:50

@ok142857

正确的部分代码:

        int N=n;
        n = n / k;
        sump = N - (n * k);

by 2013zhoujy @ 2023-02-04 16:53:41

@ok142857 没有自己可以借烟蒂这一出,所以要减掉最后一根烟蒂;而且没有计算剩下的烟蒂,所以也没有正常的烟蒂数量换。 比如:10 3,你毕竟没有借的能力,所以要减掉最后一根,然后既然减去了最后一根,就要把换新烟的数量减去1根。(10-1)/(3-1)=4,然后再加10,就是14. 代码上线

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int k,m;
    cin>>m>>k;
    cout<<m+(m-1)/(k-1);
    return 0;
}

|