请问一下怎么改才能不TLE?

P1150 Peter 的烟

lizhehao @ 2023-06-11 19:36:19

我的代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,k,ji=0;
    cin>>n>>k;
    int sum=n;
    while(n/k!=0){
        sum+=n/k;
        ji+=n;
        n=ji/k;
    }
    cout<<sum;
    return 0;
}

测试点#2和#3 TLE,求帮助


by XTC_lcd @ 2023-06-11 19:45:10

#include <iostream>
using namespace std;

int main()
{
    int n, k;
    cin >> n >> k;
    for (int i = 1; i <= n; i++)
    {
        if (i % k == 0)
        {
            n++;
        }
    }
    cout << n;
    return 0;
}

个人做法


by Rosaya @ 2023-06-11 20:00:08

@lizhehao 你这个根本就不对啊。

1000 2,这组数据就跑不出来了。


by Howells @ 2023-06-30 21:06:21

ji要取余,并且计算使用ji就好了,何必用n呢?如果用n的话,这样会有一个WA。并且while的/k没必要加,加了反而会有一个WA。具体代码见下:```cpp

include<bits/stdc++.h>

using namespace std; int main(){ int n,k,ji=0; cin>>n>>k; int sum=n; while(n!=0){ ji+=n; sum+=ji/k; n=ji/k; ji%=k; } cout<<sum; return 0; }


by Howells @ 2023-06-30 21:07:21

(刚才格式错了)ji要取余,并且计算使用ji就好了,何必用n呢?如果用n的话,这样会有一个WA。并且while的/k没必要加,加了反而会有一个WA。具体代码见下:

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,k,ji=0;
    cin>>n>>k;
    int sum=n;
    while(n!=0){
        ji+=n;
        sum+=ji/k;
        n=ji/k;
        ji%=k;
    }
    cout<<sum;
    return 0;
}

|