[题]P1150 Peter 的烟 #数学推导

题目

P1150 Peter 的烟

题解

为什么要记录这个入门题呢

因为一个题解:博客跳转

我自己做的是模拟整个吸烟然后烟蒂换烟的过程,很笨。

这个数学推导真的震撼我

最后一个式子就搞定:n+(n-1)/(k-1)

基于该题解的我的分析过程:

n个烟蒂可以换一根烟,这根烟吸完可以获得一个烟蒂

那么在烟蒂足够的情况下,每n-1个烟蒂就是一根烟

数学式表示为:n烟蒂 = 1烟 + 1烟蒂 => n-1烟蒂 = 1烟

但是这个代换有一个前提:你必须在一开始就有n个烟蒂

所以,重申一遍:烟蒂满足n个的情况下,每n-1个烟蒂就是一根烟

比如我每6个烟蒂才能换一根烟时,按照上面的推导我可以5个烟蒂换一根烟

但是我最后剩下的5个烟蒂还能这样换吗?显然不能。

所以我们一开始就将烟蒂总数减去1,使得最后的n-1个烟蒂变为n-2个

这个操作对前面的烟蒂是不会有影响的,前面的烟蒂会正常地被换掉

这样最后要是剩下n-1个烟蒂就不会进行交换

代码

我按照模拟吸烟的思路写的,能过。

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int main(){
	int n, k, sum;
	cin >> n >> k;
	sum = n;//原有的肯定会吸完 
	while(n >= k){//n此时代表的是烟蒂的数量
		int y = n / k;//换来y根烟 
		n %= k;//还剩下n个烟蒂 
		sum += y;
		n += y;//y根烟吸完后又来y个烟蒂 
	}
	cout << sum;
	return 0; 
}
相关推荐
郝学胜_神的一滴3 小时前
Qt 高级开发 031:QListWidget图标布局实战
c++·qt
Coder-magician5 小时前
《代码随想录》刷题打卡day15:二叉树part05
数据结构·c++·算法
Irissgwe5 小时前
算法的时间复杂度和空间复杂度
数据结构·c++·算法·c·时间复杂度·空间复杂度
随意起个昵称5 小时前
区间dp-基础题目3(永别)
c++·算法
有点。5 小时前
C++贪心算法二(练习题)
c++·算法·贪心算法
坚果派·白晓明5 小时前
鸿蒙 PC 应用集成 libhv 鸿蒙化三方库 —— AtomCode + Skills 驱动的高效集成实践
c语言·c++·ai编程·harmonyos·atomcode
触底反弹6 小时前
拷个 .exe 到新电脑就跑不起来?你缺的不是文件,是对链接的理解
c++·windows·操作系统
是个西兰花6 小时前
linux:命名管道与共享内存
linux·运维·服务器·网络·c++
凡人叶枫6 小时前
Effective C++ 条款08:别让异常逃离析构函数
java·linux·数据库·c++·嵌入式开发
QiLinkOS7 小时前
QiLink开源生态的三维重构:基于时间、空间与社会价值的底层规则创新白皮书
大数据·c++·人工智能·科技·算法·gitee·开源