首页 > 编程知识 正文

蓝桥杯进决赛难吗(第十一届蓝桥杯)

时间:2023-05-05 18:06:26 阅读:1561 作者:1047

问题1443:【蓝桥杯】【往期试题】数字游戏

标题描述

Kndjz正在和他的同学玩数字游戏。

游戏规则如下:kndjz和他的同学围坐成一圈。Kndjz先说1号。接下来,坐在kndjz左手边的学生将说出下一个数字2。下一个同学将从前一个同学说的数字倒数两个数字,即4。下一个同学要倒数到三,说七。以此类推。

为了不让这个数字太大,kndjz和他的同学们一致认为,当他们心中数到k-1时,下一个数字将从0开始。例如,当k=13时,kndjz和同学报告的前几个数字如下:

1, 2, 4, 7, 11, 3, 9, 3, 11, 7。

在游戏进行了一段时间后,kndjz想知道到目前为止他所说的所有数字的总和是多少。

样本描述

kndjz的数量依次是1、7、9和17。

数据规模和一致性

1 n,k,T 1,000,000;

投入

输入的第一行包含三个整数n,k,T,其中n和k的含义如上所述,T代表kndjz到目前为止所说的位数。

输出

输出一行,包含一个整数,表示kndjz说出所有数字的和。

样本值输入

3 13 3

抽样输出

17

思考解决问题:

为什么要这样做就不多说了,前面的zgdwt已经解释过了;以下是无私的美女每次报数的方式(因为我觉得之前老板说的不太清楚):

例如,当n=3,k=13,t=3时,对应的表如下(颜色为无私美报告数)

无私的美女报的数字用t表示。

第一次:t1=1

第二次:T2=7-7=((123) 1)-T2=((123) t1)% k

第三次:T2=9-9=((456) 7)-T3=((456) T2)% k

拿出1 2 3和4 5 6说:

1 3为前n项之和(n的值为3),第一项为1,最后一项为1(n-1)* d=1n-1;

第一项n的和为(第一项和最后一项)*n/2,即(1 ^ 1 ^ n-1)* n/2=6;

5 6是算术数的前n项之和,第一项a为4,容差d为1(n的值为3),第一项为4,最后一项为4(n-1)* d=1n-1;

第一项n的和为(第一项和最后一项)*n/2,即(4 ^ 4 ^ n-1)* n/2=15;

然后完善以上流程:

无私的美女报的数字用t表示。

第一次:t1=1

第二次:T2=7-7=((123)1)-T2=((123)t1)% k-T2=((11n-1)* n/2t 1)% k;

第三次:T2=9-9=((456)7)-T3=((456)T2)% k-T2=((44N-1)* N/2t 2)% k;

规律性如上;如何连接每次的结果:

t,别说了。看着就很容易知道。

至于每次的第一项和最后一项:定义一个变量A作为第一项,初始值为1,下一个第一项为N(即本例中的4),每次累加N就可以找到第一项,最后一项为算术级数公式a1 (n-1)*d=a n-1(d=1,N通过键盘输入);然后知道第一项和最后一项,规则总结如上;你可以解决这个问题

参考代码:

#包含cstdio

#包含cstdlib

#包含iostream

#包含cmath

#包含cstring

#包含字符串

#包含算法

#包含功能

使用命名空间标准;

int main()

{

整数n,k,T;

长长和=1,t=1,a=1;

scanf('%d%d%d ',n,k,T);

for(int I=1;I T;(一)

{

t=(((a a n-1)* n/2)t)% k;

总和=t;

a=n;

}

printf('%lldn ',sum);

返回0;

}

好了,今天就到这里!喜欢这篇文章或者觉得对你有帮助的读者可以和身边的朋友分享。如果你是jmdnm,也可以通过私信回复“信息”,获得礼包和开发工具。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。