p1150,Peter 的烟,#3样例不过,求解

P1150 Peter 的烟

xumingyang666 @ 2024-08-12 21:26:14

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

by dengqingrui123 @ 2024-08-12 21:37:57

@xumingyang666 给一组hack数据:

输入: 100 2

stdout:199

youout: 197

应该是烟蒂的再次利用计算出现了问题,

公式:

n+(n-1)/(k-1)

by Zhang_z_h @ 2024-08-12 21:40:05

第3个点是10跟2你可以在测一下@xumingyang666


by xumingyang666 @ 2024-08-13 08:38:01

@dengqingrui123
感谢大佬


by xumingyang666 @ 2024-08-13 08:56:12

结贴!


by yjy_fywy @ 2024-08-14 20:05:06

@dengqingrui123 大佬我输出也是197怎么办

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

代码是这样的


by dengqingrui123 @ 2024-08-15 09:24:35

@yjyhhh 应该是烟蒂再次利用的公式推错了


by yjy_fywy @ 2024-08-15 10:17:50

@dengqingrui123 那公式是啥


|