161118

1625-5    王子昂    总结《2016年11月18日》  【连续第49天总结】

标题:蓝桥杯习题

A. 数据库视频 0%

蓝桥杯试题四个 100%

B. 没来得及看数据库,明天有空再补上。

做了四个蓝桥杯的试题,同样三个基础的,又把之前历届试题中的数字游戏完善了一下。

题目为:

栋栋正在和同学们玩一个数字游戏。
   游戏的规则是这样的:栋栋和同学们一共n个人围坐在一圈。栋栋首先说出数字1。接下来,坐在栋栋左手边的同学要说下一个数字2。再下面的一个同学要从上一个同学说的数字往下数两个数说出来,也就是说4。下一个同学要往下数三个数,说7。依次类推。

   为了使数字不至于太大,栋栋和同学们约定,当在心中数到 k-1 时,下一个数字从0开始数。例如,当k=13时,栋栋和同学们报出的前几个数依次为:
   1, 2, 4, 7, 11, 3, 9, 3, 11, 7。
   游戏进行了一会儿,栋栋想知道,到目前为止,他所有说出的数字的总和是多少。

第一次做的时候是粗暴的逐个算出数字,每隔n个数字取出一个加到和里,这样做简单粗暴不会错,但是由于太简单了,而数据规模达到十万级,所以后面几条测试都超时了。(限时是1s)

第二次完善,直接求栋栋说的即所需要的数字,为1-n的累加,因此直接求T个累加即可。第一遍提交的时候出错了,思考了一下把变量从int改为long long,虽然内存空间会变大许多甚至浪费,但目前的机体和考试,对空间的限制基本都不要吝啬。(256MB)

第三次提交的时候终于达到了83分,然而也只是83分。最后一个测试出错了。完全想不明白为什么,我还拿第一个方法和第二个方法交相验证,把数字调到了规模最大的也验证了没有问题。不知道到底是哪一条数据输入会报错。试了好久也没有头绪。附代码:

#include <iostream>
using namespace std;
int main()
{
    long long n,k,T;
    long long num=1,i,sum=1,sum1=0;
    cin>>n>>k>>T;
    if(k==2)
        sum=T;
    else
        for(i=1;i<T;i++)        
            sum+=((1+i*n)*(i*n)/2+1)%k;
cout<<sum;
    return 0;
}

C.明日计划

数据库视频一个

蓝桥杯试题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值