-->
当前位置:首页 > 题库 > 正文内容

编程题:模拟

Luz3年前 (2022-09-06)题库306
Slavko养了N只兔子,他每天用各种水果和蔬菜喂养兔子。然而,兔子最喜欢草莓。在冬天,草莓很难找到,而且价格昂贵,所以Slavko只把草莓送给他的兔子的一部分。

Slavko将兔子编号为1到N。为了帮助追踪每只兔子得到了多少草莓,Slavko决定采用以下草莓分配程序。

Slavko每天都会购买一些草莓,并选择兔子A来获得第一个草莓。兔子A+1将获得第二个草莓,兔子A+2将获得第三个草莓,以此类推。

每只兔子分配一个最初为空的火柴盒,N个火柴盒形成一行。

设K为最大整数,使得K·K≤ N.每组K个火柴盒(从第一个开始)旁边都会有一个杯子。我们说K个连续的火柴盒和它们的杯子形成一个块。

在给兔子草莓之后,Slavko会把一根火柴放进每一只得到草莓的兔子的火柴盒中,除非他会把一根火柴放进一个街区的所有火柴盒中。他不会把火柴放在一个街区的所有火柴盒里,而是把一根火柴放在合适的杯子里。

兔子收到的草莓总数可以计算为火柴盒中的火柴数加上杯子中的火柴数。

![21.png](~/27124692-218d-4ed4-a3a9-153095d8ae82.png)

例如,假设有11只兔子,即N=11,数字3是最大的整数,因此K=3。将有四个块,最后一个块不完整,只有两个火柴盒。如果Slavko买了6个草莓,第一个送给兔子5,杯子和火柴盒中的状态将是:


![123.png](~/4d021874-41bb-40c2-8d50-2da4eb6fe472.png)

编写一个模拟上述过程的程序,知道兔子的数量N、天数M以及每M天的数量S和A。
每天,输出Slavko当天添加火柴的所有火柴盒和杯子中的火柴总数。

### 输入格式:
第一行包含由空格分隔的整数N和M(1≤N、M≤100000),兔子的数量和天数。

以下M行中的每一行都包含两个整数S和A,它们之间用空格隔开。这些数字意味着Slavko当天购买了草莓,兔子A将收到第一个(1≤A≤N、1≤A+S-1≤N) 。


### 输出格式:
输出M个数字,每个数字在单独的行上。第k行应该包含Slavko在第k天使用的所有火柴盒和杯子中的火柴总数。

### 输入样例1:
in
11 3
6 5
3 1
11 1


### 输出样例1:
out
4
1
6


### 输入样例2:
in
16 3
2 2
12 3
6 11


### 输出样例2:
out
2
7
3


在第一个示例中,有11个兔子和火柴盒,以及4个块。

1.第一天,Slavko给兔子5到10个草莓,把火柴放进火柴盒5、6和10,一个放进第三个杯子。在此之前,他使用的火柴盒和杯子中没有其他火柴,因此输出为四根。

2.第二天,Slavko给兔子1到3个草莓,第一杯只放一根火柴。

3.第三天,Slavko把草莓给所有的兔子,每只杯子里放一根火柴。

4.将四根火柴放入杯子后,他使用的杯子中总共有六根火柴,因此输出为六根。






答案:若无答案欢迎评论

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。