2017年10月07日普及组 数列

来源:互联网 发布:口琴的选择 知乎 编辑:程序博客网 时间:2024/05/17 09:12

这里写图片描述

分析
1.等差数列因为2个数之间的值是固定值b,若a<=u就可以直接求出a~u之间等差数列的数量(u-a) div b+1。
2.等比数列直接做就好了,因为是逐级乘法,所以速度挺快的,不过要判断*1的情况,如果等比数列某项c小于等差数列的初始项a就一定不在等差数列中,这时候就可以累加了,c=a的时候在等差数列中已经累加过了,如果c>a的话就判断(c-a) mod b等不等于0,等于0就是在等差数列中,这时候不累加,否则累加。

程序:

vara,b,c,d,up,ans:int64;begin    assign(input,'shulie.in');    reset(input);    assign(output,'shulie.out');    rewrite(output);    read(a,b,c,d,up);    if a<=up then ans:=(up-a) div b+1;    while c<=up do    begin        if c<a then inc(ans) else        if c>a then        if (c-a) mod b<>0 then inc(ans);        c:=c*d;        if d=1 then break;    end;    write(ans);    close(input);    close(output);end.
原创粉丝点击