公式法,90分,wa了第三个点,下载次数已经用完了, 求大佬看看

P1150 Peter 的烟

ljx_gkx @ 2023-04-26 11:25:41

#include<iostream>
using namespace std;
int main()
{
  int n, k;     //n根烟,k根烟蒂换一根烟!

  cin >> n >> k; 
  int cnt = n;  //烟的数量!
//  计算烟蒂生烟的数量:
  while (n / k != 0) {
    cnt += n/k;
    n /= k;
  }
  cout << cnt << endl;
  return 0;
}

by windows_fleon @ 2023-04-26 11:27:05

@ljx52lm

n-=n/k*k


by ljx_gkx @ 2023-04-26 12:29:33

@windows_fleon 谢谢大佬


by ljx_gkx @ 2023-04-26 12:33:53

@windows_fleon 大佬,,80分,WA了第二个点和第三个点。


by FengYuXinMing @ 2023-04-26 13:21:49

稍等,我去把这道题看一眼(AC了,我看一下怎么给你讲)


by FengYuXinMing @ 2023-04-26 13:30:12

#include<bits/stdc++.h>//万能头文件 
using namespace std;
int main()
{
    int n,k,sum = 0,a = 0;
    //n代表原来有多多少烟
    //k代表多少烟蒂可以换一个烟 
    //sum代表共吸了多少烟a代表现在有多少烟蒂 
    cin >> n >> k;
    sum += n;//先累加一波,把本来的先加上 
    a += n;//烟蒂同理 
    while (a >= k){//如果从现在的烟蒂比多少烟蒂换一个烟福多 
        sum += a/k;//a/k求出现在的烟蒂能换多少烟
        a = a/k + a%k;
        //重新赋值 a/k就是换了多少烟,换了多少就加上多少烟蒂
        //抽完就有了嘛,再加上a%k,因为a%K代表原来换完烟后还
        //剩下多少烟蒂,因为剩下的换完了,所以就再加上剩下的
        //烟蒂就行 
    }
    cout << sum;//输出不多说了 
    return 0;
}

本蒟蒻也是第一次教别人,有不好的你和我说


by FengYuXinMing @ 2023-04-26 13:34:38

@ljx52lm 你while的问题是,while里面第二行,举个栗子你的n是10,k是3,先cnt+=n/k,n还是10,因为那只是赋值,再n/=k,10/3=3那个1会省略,但是我们真正要留下的是1,自然就是错的了


by ljx_gkx @ 2023-04-26 15:48:07

@ababbjxzt 谢谢佬,太详细了!


by FengYuXinMing @ 2023-04-26 17:16:41

@ljx52lm 第一次回答别人的问题,太谢谢你了,让我找到了自信,互关吗?


by ljx_gkx @ 2023-04-27 17:09:08

@ababbjxzt 已关注


|