蓝桥杯 数字游戏

本文介绍了如何使用C++解决在蓝桥杯比赛中遇到的数字游戏时间超限问题,关键在于优化算法并使用long long类型避免整数溢出。
摘要由CSDN通过智能技术生成
//时间超限,所以肯定是需要另一种方法去解决,单纯的模拟不太行
#include <iostream>
#include <algorithm>

using namespace std;

int a[1000000]={0};

int main()
{
    int n,k,t;
    cin>>n>>k>>t;
    //初始化
    int cycles=1;//循环次数
    int increaseNum=0;//每次增长的数量
    int unprocess=0;//增长后的数字
    int sum=1;//栋栋说的数字的和

    while(cycles<t)//循环t-1次
    {
        for(int i=0;i<n;++i)
        {
            if(cycles==1&&i==0)//起始数字为1
            {
                a[i]=1;
                increaseNum++;
            }
            else
            {
                unprocess=a[(i+n-1)%n]+increaseNum;//下一个说的数字是上一个数字加上增加的数
                if(unprocess<k)//判断这个数字是否小于k
                    a[i]=unprocess;
                else
                    a[i]=unprocess-k;
                increaseNum++;
                if(i==0)//这个数字是栋栋说的就把这个数加起来
                    sum+=
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值