zjc


私信TA

用户名:zjc

访问量:1203

签 名:

等  级
排  名 54181
经  验 258
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校 新疆大学
专  业

  自我简介:

解题思路:

#include<stdio.h>
int main(void){
    int i,n,k,t;
    long long sum=1,a=1,cnt=1;
    scanf("%d%d%d",&n,&k,&t);
    for(i=0;i<t-1;i++){
        cnt=((a+a+n-1)*n/2+cnt)%k;        //下一个数字
        sum+=cnt;
        a=a+n;        //下一次的起始变量
    }
    printf("%I64d\n",sum);
    return 0;
}


注意事项:
我们其实只需要知道东东的数字就好,而对他朋友的数字,我们并不关心,东东的数字从1开始,报出T个数字,那么就是游戏进行了T-1圈,而每次东东报出数字,距他下一次报数中间间隔n次,而报的数字又是每次加1,那么这是一个等差数列,我们可以算出每两个数之间间隔多少,然后加上上一次报的数对于k求余就是这次得数,然后累加到sum中,但是由于循环次数过大,考虑溢出问题,把有溢出危险的变量声明的大一点



参考代码:

 

0.0分

0 人评分

  评论区

  • «
  • »