社区讨论
数学大法,又快又好
P1150Peter 的烟参与者 11已保存回复 14
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 14 条
- 当前快照
- 1 份
- 快照标识符
- @mi6ghqv5
- 此快照首次捕获于
- 2025/11/20 04:29 4 个月前
- 此快照最后确认于
- 2025/11/20 04:31 4 个月前
##数学方法
步骤如下:(设sum为能吸到烟的总数,k、n和题上的一样)
- 一开始P必然能吸n根烟,先加上去;
2.大家想想,k个烟蒂可以换一支烟,吸完后sum++,同时会产生一个烟蒂。也就是说,k-1支烟蒂可以换一支烟,有n个烟蒂就可以得到n/(k-1)支烟。所以sum+=n/(k-1);(具体看第三步)
3.如果到最后只剩k-1个烟蒂的话不就麻烦了吗? 只要单独列出这种情况就好了(当这种情况发生时,n%(k-1)是等于0的)
CPP#include<iostream>
using namespace std;
int main()
{
int n,k;
cin>>n>>k;//输入
int sum=n+n/(k-1);//1.2
if(n%(k-1)==0) sum--;//3
cout<<sum;//输出
return 0;
}
回复
共 14 条回复,欢迎继续交流。
正在加载回复...