Music

题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=88890#problem/C

题目:

Description

Little Lesha loves listening to music via his smartphone. But the smartphone doesn't have much memory, so Lesha listens to his favorite songs in a well-known social network InTalk.

Unfortunately, internet is not that fast in the city of Ekaterinozavodsk and the song takes a lot of time to download. But Lesha is quite impatient. The song's duration is T seconds. Lesha downloads the first S seconds of the song and plays it. When the playback reaches the point that has not yet been downloaded, Lesha immediately plays the song from the start (the loaded part of the song stays in his phone, and the download is continued from the same place), and it happens until the song is downloaded completely and Lesha listens to it to the end. For q seconds of real time the Internet allows you to download q - 1 seconds of the track.

Tell Lesha, for how many times he will start the song, including the very first start.

Input

The single line contains three integers T, S, q (2 ≤ q ≤ 104, 1 ≤ S < T ≤ 105).

Output

Print a single integer — the number of times the song will be restarted.

Sample Input

Input
5 2 2
Output
2
Input
5 4 7
Output
1
Input
6 2 3
Output
1

Hint

In the first test, the song is played twice faster than it is downloaded, which means that during four first seconds Lesha reaches the moment that has not been downloaded, and starts the song again. After another two seconds, the song is downloaded completely, and thus, Lesha starts the song twice.

In the second test, the song is almost downloaded, and Lesha will start it only once.

In the third sample test the download finishes and Lesha finishes listening at the same moment. Note that song isn't restarted in this case.

题意:

一首歌一共有T秒,s表示第一次下载的秒数,q表示每q秒可以下载(q-1)秒这首歌,第一次下载结束后,每次播放的同时会下载。求一共从头开始播放的次数。

分析:

一道很好的想法题,每当播放到之前的未download处时,由于播放的同时也在下载,所以总会再次下载了一些,理论上会无限循环播放和下载,但总会有个极限,可以记为S(当前可播放的时间)。

S=s+s*(q-1)/q+s*(q-1)/q*(q-1)/q+...。运用等比数列求和可以得知当n->+∞时,S=s*q;
当播放到第i次的时候S=s*(q^i)。
#include<iostream>
using namespace std;
int main()
{
int t,s,q,c=;
cin>>t>>s>>q;
while(s<t)
{
c++;
s=s*q;
}
cout<<c<<endl;
return ;
}

最新文章

  1. Apache Torque的使用
  2. ComboxEdit实现二级联动
  3. eclipse 安装git
  4. 【Linux】基于Linux的buffer和cache学习
  5. OOD/DDP 中的 SRP 原则
  6. Spring学习之Ioc控制反转(2)
  7. 修改VirtualBox虚拟机默认存储路径及虚拟机迁移方法
  8. 理解javascript this 的绑定过程
  9. ASP.NET MVC 企业级实战
  10. JavaScript中闭包的写法和作用详解
  11. k8s部署spring-boot项目失败
  12. 修改centos和ubuntu ssh远程连接端口提升系统安全性
  13. 为Qemu aarch32开发板添加sd卡
  14. p1654 OSU!
  15. 如何获取listview里面的edittext或者RadioGroup的值,涉及到引发的混乱现象
  16. cocos2d - 翻转两个Sprite
  17. stm32内部温度计算方法
  18. 刚刚明白了for循环写三角形
  19. 又一家药企IPO被拒,原因竟然是……
  20. VMware Workstation 14 pro License Keys

热门文章

  1. list[C++]
  2. 如果 if - 迈克.杰克逊的墓志铭
  3. Linux下autoconf和automake使用
  4. Jmeter之csv、用户自定义变量以及Query Type分析(八)
  5. popupwindow点击空白处如何自动消失?
  6. 02 CSS/javaScript
  7. web开发的基础知识:http请求
  8. 并查集(路径更新) LA 3027 Corporative Network
  9. 图论 SRM 674 Div1 VampireTree 250
  10. ps去水印