求答复

P1150 Peter 的烟

Traveller_Blanca @ 2023-03-11 21:32:21

请各位大佬回答一下,我C++的,错两个模块。

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
    int a;
    int b;
    cin>>a>>b;
    cout <<a+a/b<< endl;
    return 0;
}

by Tim0509 @ 2023-03-11 21:42:21

比如说:

n=10,k=3

一开始10根烟,

吸完了,10根烟蒂,换回3根烟

再吸完了,3根烟蒂,换回1根烟

所以总共吸了10+3+1=14 (根)

是要推式子的,你这个不对


by Wangzj512 @ 2023-03-11 21:55:18

@Stare 首先,不完全赞同 @Tim0509 的观点,这题其实用循环就可以解决了。 其次,C++中int类型的最大值为2147483647<<10^{18}(远小于),建议使用long long类型变量(能够存储的最大值约为9.22*10^{18})


by Tim0509 @ 2023-03-11 22:16:33

@Wang512

是的 这道题的确可以循环,但是开long long 推式子应是更好的


by Wangzj512 @ 2023-03-11 22:47:26

尽管循环的复杂度为O(log_k n)?推出来柿子本身仍是循环(还可以继续推但是耗费的时间远多于直接写循环),虽然说有助于对题目更深地理解,但是效率同样重要。


by Wangzj512 @ 2023-03-11 22:48:26

还有,我是怎么把10^8看成10^{18}的(


by Traveller_Blanca @ 2023-05-26 13:25:23

谢谢各大佬,但我还是不会


by Traveller_Blanca @ 2023-05-26 13:25:58

有没有纯代码的事例


|