1069向z同学学习

Z同学为了实现暑假去云南旅游的梦想,决定以后每天只消费1元,每花k元就可以再得到1元,一开始Z同学有M元,问最多可以坚持多少天。
输入
输入2个整数M, k,(2 <= k <= M <= 1000)。
输出
输出一个整数,表示M元可以消费的天数。
样例输入 Copy
4 3
样例输出 Copy
5

题解:这是一道递归求解的水题,难度一般般,递归时间复杂度为O(n)
但是可以转化成一般性的数学问题求解,一步到位时间复杂度为O(1)
考虑到M 和K 的 大小关系,得具体分成两部分求解:
1)m/k <k 时 额外得到的钱数就少于k,那么总钱数就等于 m + m/k
2)除去1)外的情况 每花k元就可以再得到1元,换言之k天只需要k-1元钱,但是得考虑第一次花了k元钱时,自己兜里是否还能剩k-1块钱 ,只要还剩的钱>=k-1,就能得到额外的一块钱,所以这才是本题要害
总天数=总钱数=(m-(k-1)/(k-1) +m

代码如下(本还能再减少行数 就这样了,哈哈)

 #include <bits/stdc++.h>
 using namespace std;
 int stuz(int m,int k){
       int ans;
      if(m/k<k) ans= m+(m/(k));
       else ans=(m-(k-1))/(k-1) +m ;
     return ans; 
 }
 int main(){
     int m,k;
     cin>>m>>k;
     int ans=stuz(m,k); 
     cout<<ans;
     return 0;
 } 
全部评论
这是昨天同学问到的一道题 当时想的可以用数学归纳推理出来通解,但是就是不能通过,想了好久,用笔算了好多次,查遍网上,全是递归,就是没有数学方法解决,终于在中午,想到2)的 计算式,找到网址:http://acm.zzuli.edu.cn/problem.php?id=1069 试了三次才通过,现在我直接都有点糊涂到底是咋分成这两种情况的啦!!!
1 回复 分享
发布于 2020-01-04 20:02

相关推荐

01-14 10:23
已编辑
湖南师范大学 计调
太久没更新,前几天看到一条评论,说“牛客就是当年那群做题区毕业了开始找工作还收不住那股味”的群体。字里行间透着居高临下的评判,不是,他该不会以为自己很幽默?很犀利吧?作为在牛客混了不算短日子的用户,我感到的不只是被冒犯,更是一种深刻的悲哀——这种以“松弛感”为名,对另一种生存策略的轻蔑,颇有一种自己考不上大学早早出来混社会,嘲笑考上大学的人是书呆子,然后大言不惭地说:死读书有什么用,人脉和资源才是硬道理。我不知道说这个话的人,手头究竟握着多少真正管用的人脉与资源,也不知道他这么傲慢地说出“那股味”的时候,是站在哪一个巨人的肩膀上,才能如此“松弛从容”地俯视众生,还能品评出别人身上“没收住”的余...
淬月星辉:这种评论把正常的努力扭曲成卷😂,说白了就是自己不努力,看着身边努力的人一个个都事业有成了,自己的心里开始不平衡了,就发这种酸言酸语。牛客可以说是我用过那么多平台里社区氛围最好的论坛了,用了大半年了,基本上没见过有人吵架的,都是在互帮互助提建议,帮忙看简历的,帮忙选offer的,帮忙指点学习路线的,分享工作经验和趣事的,我觉得这才是互联网该有的样子。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务