论啃书的正确方式

一下午的时光总是过得很快,有时候“一不小心”就浪费很多时间。

不管你有没有过这样的情况,反正我是有。


以下是我列出来的放纵的三个过程:

1、感到有点枯燥,来点东西爽爽

2、就一点点,没有关系的

3、啊、做这个果然是比啃书顺畅多了,我刚才计划是什么?管它呢!

就是1-2-3这样走着,当你觉得太过分的时候就会从3跳出来,但是没过多久可能就又会跳入到1,似乎是一种循环。

我并不否定这个过程对于转换思路是有好处的(跳出一个思维再跳回进来),这是一个度的问题。


以上三个阶段的分析:

1、还未进入思考的状态(或者说枯燥,即还未完全沉下心),潜意识想做其他无关紧要的事情(比如游戏、网页、视频)。

2、从而有对自己的一点点放纵的计划

3、放纵付诸行动,原本只是想来一点点,但是似乎有点停不下来


形成这种行为的原因分析:

我们把大脑控制分为两部分:理智和情绪。

啃书或者工作是理智的控制产生的行为,而泡论坛游戏等是情绪的控制产生的行为,因为做前者的时候 情绪 没有感到快乐,所以不想干了,想要打败理智获得控制权,并且 情绪 是要和 理智 打持久战的,一个攻击一个防御,情绪 慢慢消磨 理智。

除非你在啃书的时候,真心感到愉悦,那么 情绪 会支持 理智。


方法有以下:

1、远离让你产生暂时愉悦感的任何事物:坐在图书馆里看书。

2、让情绪帮助你:制造危机感、想通一件事情的愉悦感、钻研透某件事情和别人分(CHUI)享(NIU)产生的愉悦感等等……


情绪是你,理智也是你,请不要精神分裂。我们想要情绪,所以我们理智。


那么还有第三种方法:

暂时安抚情绪:

给 情绪 承诺,比如说啃书45分钟,保证45分钟后10分钟爽一爽,如此循环;也可称为劳逸结合。


很多时候用好的方法可以省很多力气,有好的心态则会有更多能量。

<think>嗯,我现在得解决这个问题。题目是说,图书馆里有n本书,一只老鼠每隔x小时能啃完一本书。在啃完一本之前,它不会开始啃下一本。现在经过y小时后,问还剩多少本完整的书。输入的是n、x、y,输出剩下的数量。那应该怎么算呢? 首先,我得理解老鼠啃书方式。假设x是每本书需要的时间。比如,如果x是2小时,那么老鼠啃完一本书需要2小时,然后才会开始下一本。但这里有个问题,如果总时间y不够啃完当前的那本,那么这本可能只被啃了一部分,剩下的还是完整的吗?题目里说“啃光一本书之前,不会啃另一本”,所以如果时间不够,那当前这本可能被部分啃了,但剩下的其他书都是完整的?或者题目中的“啃光”是指完全啃完,否则不算? 根据问题描述,正确的理解应该是:老鼠在开始啃一本书后,必须花完整的x小时才能啃完,如果剩余时间不够x小时,那么这本书不会被啃完,也不会算作被啃掉。所以,在y小时里,老鼠能啃完多少本书呢? 比如样例1:n=10,x=2,y=3。那么每本书需要2小时。在3小时里,老鼠可以啃完1本(2小时),剩下的1小时不足以啃第二本,所以总共有2本被啃掉?或者是不是这样? 哦,看样例1的输出是8,原本是10本,剩下8,说明啃了2本。那这里可能我的理解有问题。因为3小时的话,如果每本需要2小时,那第一本啃完用2小时,剩下1小时啃第二本,但啃不完。那为什么样例1的结果是啃了2本呢? 或者题目中的时间计算方式可能不同。比如,老鼠在开始啃一本书的时候,不管有没有啃完,只要开始啃就算这本被啃掉?但这样显然不符合题意。或者题目可能的意思是,只要总时间足够,老鼠可以连续啃书,但在计算时,如果剩下的时间不足以啃完当前这本,那么这本不算被啃掉? 比如,样例1中的总时间3小时,x是2。那么总共有3小时。第一本需要2小时,啃完后还剩1小时。第二本需要2小时,但剩下的时间不够,所以只能啃完1本。那么剩下的书应该是10-1=9?但样例的输出是8。这说明我的理解有错误。 或者是不是题目中的时间计算方式是按整除方式处理?比如,总时间y除以x,得到啃了多少本,不管余数。比如3除以2等于1.5,取整数部分为1,那么啃了1本。那剩下的应该是10-1=9,但样例输出是8,所以这也不对。 这时候我应该仔细看样例。看样例1的输出是8,输入是n=10,x=2,y=3。输出是8,也就是被啃了2本。那这说明,在3小时里,老鼠啃了1本完整的,然后剩下的1小时里又啃了另一本的50%,但可能题目中的规则是只要开始啃,不管是否完成,就算啃完?这显然不符合题意描述。或者可能题目中的处理方式是,只要总时间超过等于x,那么可以啃完,剩下的时间再继续啃下一本? 或者可能,老鼠啃完一本书后立即开始下一本,不管剩下的时间是否足够。比如,总时间y=3,x=2。第一本啃完用2小时,剩下1小时开始啃第二本。虽然这第二本需要2小时,但总时间不够,所以啃了1小时,但这本没有被啃完。所以总共有1本被啃完,剩下的1小时没有完成第二本。所以被啃掉的是1本。所以剩下的应该是10-1=9,但样例输出是8,这说明我的思路错误。 这说明我的理解有问题。这时候必须仔细看样例。 样例1的输入输出是:输入n=10,x=2,y=3。输出是8。也就是啃了2本。那可能怎么得到这个结果? 那可能,计算方式是总时间y除以x,向上取整?比如3/2=1.5,向上取整是2,所以啃了2本?这显然不对,因为总时间3小时只能啃完1本,剩下的时间不够啃第二本。或者可能,题目中的老鼠在y小时结束后,即使没有啃完当前这本,也算作被啃掉了?这显然和题目描述中的“啃光一本书之前,不会啃另一本”矛盾。那这时候必须重新理解题意。 或者可能,题目中的“每x小时能啃光一本书”中的x指的是每小时能啃多少,比如每本书需要x小时。比如,x=2小时,啃完需要2小时。那么总时间y小时里,可以啃多少本? 比如,当y=3小时时,可以啃完1本(2小时),剩下的1小时啃第二本,但此时无法完成,所以只能算1本。那总被啃的是1本,剩下的应该是9本。但样例输出是8。这说明我的思路还是有问题。 这个时候,必须重新审视题目。题目中的输入输出样例让我困惑,可能需要再仔细分析样例。 看样例1:输入是10本书,x=2小时每本,总时间y=3小时。输出是8,也就是啃掉了2本。那这说明,在3小时里,老鼠啃了2本书。这怎么做到的呢? 或者可能,题目中的老鼠啃书的计算方式是:总时间y除以x,向上取整,得到被啃的数量?比如,3/2=1.5,向上取整为2?所以不管剩下的时间是否足够,只要总时间除以x有余数,那么加一本? 但这样的话,在样例2中,输入是5本,x=2,y=4。那么4/2=2,所以啃掉2本。剩下的5-2=3,与样例输出3一致。而样例1的3/2=1.5,向上取整得到2,所以啃掉2本。所以这可能就是正确的计算方式? 那这可能就是题目的解法。那么,正确的做法应该是,计算总共有多少本书被啃完,这等于总时间y除以x的商(向下取整)吗?或者商向上取整? 比如,总时间y小时,每本需要x小时,那么最多可以啃完floor(y/x)本。比如,y=3,x=2,得到1本。那剩下的书是n -1=9。但样例1的输出是8。这说明这种思路错误。 那这时候,我应该仔细看一下题目中的样例: 样例1的输出是8,所以被啃掉的是2本。可能这里的计算方式是,总时间y除以x,如果有余数的话,那么可以再啃一本的开始,但题目中的问题可能将余数也算作一本? 比如,总时间y=3,x=2,那么可以啃完1本(2小时),剩下的1小时开始啃第二本。虽然无法完成,但此时是否算作被啃掉?题目中的描述是,老鼠在啃光一本书之前,不会啃另一本。所以如果它开始啃第二本,那么必须把剩下的时间全部用来啃这本书,而不管是否完成。那么此时,这本是否算作被啃掉? 答案是不算。因为题目中的描述是,必须啃完才会开始下一本。所以,当总时间y小时,能啃完的数量是floor(y/x)。而剩下的时间如果不够啃完一本,那么剩下的时间不会被使用。例如,y=3,x=2,那么啃完1本,剩下的1小时无法啃完第二本,所以总共有1本被啃掉。那为什么样例1的输出是8? 这时候,我可能必须重新分析样例,或者可能我的理解有错误。 或者,可能题目中的y是总时间,而老鼠开始啃书的时间是否包括在总时间内?比如,当y正好等于k*x的时候,可以啃完k本。否则,当有余数的时候,还能再啃一本? 或者,我是不是应该用y除以x,向上取整? 比如,y=3,x=2:3/2=1.5,向上取整是2。所以,总共有2本被啃掉。那这样的话,样例1的输出就正确了。但这时候,这显然与题目中的描述矛盾,因为老鼠在啃完一本之后才会啃下一本。比如,3小时的情况下,啃完一本需要2小时,剩下的1小时不足以啃第二本,所以只能啃掉一本。而根据这种计算方式,结果却得到2本被啃掉。 这显然矛盾。这说明题目的解法可能不是这样的。那我必须仔细看题目中的条件。 题目中说:“输入数据保证y小时后至少会剩下一本完整的书。”所以,可能被啃掉的数量最多是n-1本。例如,当总被啃的数量是k,必须满足k <=n,否则输出结果可能错误。但根据样例1,当n=10,k=2,那么剩下的8是合理的。 那么,问题可能出在如何计算k的值。假设k等于y//x,或者等于(y +x -1)//x ? 比如,样例1的y=3,x=2,那么3//2=1,而(3+2-1)//2=4//2=2。这时候,得到的k是2,所以被啃掉的是2本。所以,在这种情况下,正确的计算方式是将总时间y除以x,向上取整,得到k的值。 但这样的话,如果总时间足够让k*x <=y,那么k的值就是正确的?比如,如果总时间y=4,x=2,那么k=2。这与样例2中的情况相符,因为样例2的输入是y=4,x=2,所以k=2,剩下的5-2=3,输出正确。 但这样的话,当y=3,x=2时,k=2,而总时间为3小时,需要2*2=4小时才能啃完两本,这显然不可能。这显然矛盾。 这时候,我意识到我可能完全误解了题意。或者,可能题目中的描述有误?或者可能我的思路哪里错了? 这时候,我必须仔细重新读题。 题目描述: 老鼠每x小时能啃光一本书。在啃光一本书之前,不会啃另一本。求y小时后剩下多少本完整的书。 例如,如果x是2小时,那么在3小时里,老鼠只能啃完一本,而第二本开始啃但没完成。所以,被啃掉的书数量是1,剩下的就是n-1。比如样例1的输出应该是9,但实际是8。这说明我的思路还是错误的。 现在,我必须仔细看样例输入输出。比如样例1的输入是: n=10,x=2,y=3。输出是8,也就是啃了2本。这说明在3小时里,老鼠啃了2本。这显然只有在x=1.5小时的时候才可能发生。所以这说明我的理解完全错误,或者题目中的x代表的是每小时啃书的速度? 或者,题目中的x可能表示的是老鼠每小时能啃多少本书?比如,x是每小时啃1/x本书?或者可能反过来? 或者题目中的x是啃书的时间,例如,每本书需要x小时。例如,x=2小时/本。而总时间y小时,可以完成y//x本。如果余数不为零的话,可以再啃一本的开始,但这本不会被啃完。所以被啃掉的书是y//x本。例如,y=3,x=2,那么y//x=1,所以被啃掉的是1本。剩下的书是9。这与样例不符。这时候,必须寻找其他可能性。 此时,可能我需要重新分析问题,或者找出样例中的计算方式。 看样例1: 输入是10,2,3。输出是8。即被啃掉2本。那么,总时间3小时,每本需要2小时。那么,总共有3小时,可以啃完1本(2小时),剩下的1小时啃第二本。此时,问题可能将这本书视为被啃掉了?或者,可能题目中的y小时后,不管是否完成,只要开始啃了就算被啃掉? 如果是这样的话,那么当总时间y小时,能够开始啃k本书,其中k是y//x的商,加上余数是否大于0的话。例如,总时间除以x得到的商是k,如果有余数,那么可以开始啃第k+1本,但此时是否算作被啃掉? 这显然与题意矛盾。因为题目中说,在啃光之前不会啃另一本,所以如果开始啃第k+1本,那么必须在该本被啃完之前不能开始下一本。而问题中,在总时间y小时的情况下,是否允许在最后时刻开始啃一本? 比如,当x=2,y=3,那么第一本2小时,剩下的1小时开始啃第二本。此时,这本书是否算作被啃掉?如果算作被啃掉,那么答案就是2。否则的话,只算1本。但样例的结果是2,所以必须找出这种情况下的正确计算方法。 或者,可能题目中的“老鼠每x小时能啃光一本书”中的x是指,每小时可以啃1/x本书。例如,每本书需要x小时,所以每小时啃1/x本。那么,总时间y小时,可以啃y/x本。如果这样,那么当y=3,x=2时,总共有3/2=1.5本被啃完。但由于只能啃整数本,所以取1.5的整数部分?或者四舍五入? 比如,y=3,x=2,总共有1.5本被啃完,向下取整得到1,或者向上取整得到2。此时,样例中的输出是2,所以可能取的是向上取整? 但这样的话,如果y=4,x=2,那么4/2=2,啃完2本。样例2的输出是3,即5-2=3,符合结果。此时,正确的计算方法是总被啃的本数等于y/x,向上取整后的结果? 例如,计算k=ceil(y/x)。然后,剩下的书是n -k。但必须保证k <=n-1,因为题目中说至少剩一本。 那这样的话,样例1中的3/2=1.5,向上取整得到2,所以10-2=8。样例正确。样例2中4/2=2,5-2=3,正确。那这可能就是题目的解法? 那这样的话,正确的计算方法就是,总被啃的本数等于y除以x的商,向上取整。即,如果y%x不等于0的话,商加1。 比如,计算k = y//x + (1 if y%x !=0 else 0) 但是,这会导致当y刚好是x的整数倍时,k等于y/x。例如,当y=4,x=2时,k=4/2=2,符合条件。 那这样,当y=3,x=2时,k=3//2=1,余数是1,所以k=1+1=2。所以被啃的2本。这符合样例。 那此时,这个计算方法正确的。但问题在于,这与题目的描述是否一致? 题目中的描述是,老鼠每x小时能啃光一本书,且在啃光之前不会啃另一本。那么,当总时间y小时,老鼠可能开始啃k本书,其中k等于y//x,如果余数不为零,则k+1吗?或者,这显然与题目中的条件矛盾? 比如,在总时间3小时的情况下,每本需要2小时。那么,第一本需要2小时,啃完后剩下1小时。此时,老鼠会开始啃第二本,但只能啃1小时,无法完成。根据题目中的条件,在啃光之前,不会啃另一本。所以,在这种情况下,老鼠只能啃完第一本,而第二本虽然开始啃了,但没完成,所以不算作被啃掉。因此,总被啃的本数是1。 那这显然与样例的结果矛盾。这说明,我必须重新理解题意。 或者,可能题目中的老鼠在开始啃书的时候,不管有没有完成,只要开始啃就算作被啃掉?这可能吗? 比如,老鼠啃一本书,只要开始啃了,不管是否完成,这本书就被视为被啃掉了。比如,在总时间3小时,x=2的情况下,第一本需要2小时,然后开始第二本,啃1小时。此时,第二本也被算作被啃掉了?这显然不符合题意中的描述。 那这说明,我的理解肯定是哪里出错了。这时候,必须仔细分析题目中的条件。 题目中,输入数据保证y小时后至少剩下一本完整的书。所以,被啃掉的书数不能超过n-1。在样例1中,被啃掉的是2本,这符合条件,因为10-2=8>=1。 所以,问题的解法可能与我的初始理解不同。正确的解法可能确实是计算k=ceil(y/x),然后取min(k, n-1)。例如,在样例1中,k=ceil(3/2)=2,而n=10,所以取2,剩下的8本。在样例2中,k=4/2=2,所以剩下的5-2=3本。这符合样例。 所以,正确的解法是:总被啃的本数k等于y除以x的向上取整,然后如果k超过n的话,取n的值。但题目中保证y小时后至少剩下一本,所以k最多是n-1。所以,正确的计算方式是:k = min( ceil(y/x), n-1 ) 但问题中的输入数据已经保证y小时后至少剩下一本,所以不需要处理k超过n的情况。也就是说,可以直接计算k=ceil(y/x),但必须确保k <=n-1。例如,输入数据已经保证这一点,所以我们可以直接计算k=ceil(y/x),然后剩下的书是n -k。 那现在的问题是,如何计算ceil(y/x)。在C++中,可以用(y +x -1)/x,这样可以避免使用浮点数运算,得到向上取整的结果。例如,y=3,x=2时,3+2-1=4,4/2=2。对,这正是样例的结果。 所以,正确的计算步骤是: 1.计算被啃掉的书的数量k = (y +x -1)/x。这个表达式的结果等于y除以x的向上取整。 2.然后,剩下的书是n -k。但根据题目中的条件,k必须<=n-1,所以输入数据保证这一点。 所以,对于样例1: k=(3+2-1)/2=4/2=2,所以10-2=8。 对于样例2: k=(4+2-1)/2=5/2=2,所以5-2=3。 这正好符合样例的输出。所以,这就是正确的解法。 那现在,问题转化为如何实现这个计算。在C++中,整数除法是向下取整的,所以 (y +x -1)/x可以得到向上取整的结果。 因此,剩下的书的数量是n - (y +x -1)/x。 但必须确保k不超过n-1。根据题目中的输入条件,这一点已经被保证,所以无需处理。 综上,这个问题的正确解法是计算k=(y +x -1)/x,然后输出n -k。 那现在,我需要编写C++代码来实现这个逻辑。 步骤如下: 1.读取n,x,y三个整数。 2.计算k = (y +x -1) / x。注意,这里要确保整除,使用整数除法。例如,在C++中,表达式是 (y + x -1)/x。 3.计算剩余的书数目:n -k。但需要确保k <=n-1。题目中已经保证,所以直接输出即可。 例如,样例1的输入: n=10,x=2,y=3: k=(3+2-1)/2=4/2=2,所以输出10-2=8。 所以,代码的大体结构是: #include <iostream> using namespace std; int main() { int n, x, y; cin >> n >> x >> y; int k = (y + x -1)/x; cout << n -k << endl; return 0; } 这样应该就能得到正确的结果。那测试样例是否通过? 比如样例2,输入是5,2,4: k=(4+2-1)/2=5/2=2,5-2=3,正确。 那如果y是x的整数倍呢?比如x=3,y=6。那么k=(6+3-1)/3=8/3=2(整数除法),所以正确。此时,k=6/3=2,正确。 综上,这个代码是正确的。</think>要解决这个问题,我们需要计算在给定时间后,图书馆里剩余的完整书籍数量。以下是详细的解决思路和实现方法: ### 方法思路 1. **问题分析**:老鼠每啃完一本书需要固定的时间 `x` 小时,且在啃完当前书之前不会开始下一本。我们需要确定在 `y` 小时后,老鼠已经啃完多少本书,并计算剩余的完整书数量。 2. **关键观察**:总时间 `y` 小时内,老鼠最多能啃完 `k` 本书,其中 `k` 是 `y` 除以 `x` 的向上取整结果。例如,若 `y=3` 且 `x=2`,则 `k=2`(因为老鼠会开始啃第二本书,尽管未完成)。 3. **数学计算**:使用整数运算技巧 `(y + x - 1) / x` 来高效计算向上取整的结果,避免浮点数运算。 ### 解决代码 ```cpp #include <iostream> using namespace std; int main() { int n, x, y; cin >> n >> x >> y; int k = (y + x - 1) / x; cout << n - k << endl; return 0; } ``` ### 代码解释 1. **输入读取**:读取书籍数量 `n`、每本书的啃食时间 `x` 和总时间 `y`。 2. **计算啃完的书本数**:通过 `(y + x - 1) / x` 计算向上取整的啃食书本数 `k`。 3. **输出剩余书籍**:从总数 `n` 中减去已啃食的书本数 `k`,得到剩余完整书籍数。 此方法确保了在整数运算下正确高效地处理所有输入情况,满足题目要求的时间复杂度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值