>Description
给定一个等差数列,第一项是a, 从第二项开始,每项与前一项的差都是一个定值b。如果用数学形式来表示,那么可以表示成 a + b × x , 其中 x≧0,且是整数。例如: a = 1, b=2, 那么这个等差数列就是:1,3,5,7,9…

再给定一个等比数列,第一项是c, 从第二项开始,每项是前一项的d倍。如果用数学形式来表示等比数列,则是 c ×(dy)。 其中 y≧0, 且是整数。例如: c = 2, d = 3, 那么这个等比数列就是:2,6,18,54…

你的任务是计算在1至upperBound内的正整数,有多少正整数是“合法”的?

所谓的“合法”是指:该整数属于上面给定的等差数列的某项或者属于等比数列的某项,或者既属于等差数列的项也属于等比数列的项。


>Input
一行,5个整数,分别是a,b,c,d,upperBound。

(1≤a,b,c,upperBound≤1012, 1≤d≤105。)

对于80%的数据,1≤upperBound≤1000000。

>Output
一个整数,表示“合法”正整数的个数。


>Sample Input
1 1 1 2 1000

>Sample Output
1000


>解题思路
这道题实际上就是求在一定的范围内等差数列的项数与等比数列的项数的和,然后再去重。

如何实现:
等差数列的项数我们都知道了,可以直接用一个项数来表示:(末项-首项)/公差+1;
接着我们再一个一个模拟等比数列的每一个项,如果它不在等差数列中就ans++


>代码

#include<iostream>
#include<cstdio>
using namespace std;
long long a,b,c,d,upper,ans;
int main()
{scanf("%lld%lld%lld%lld%lld",&a,&b,&c,&d,&upper); //一定要开long longif(a==1&&b==1) //如果首项为1,公差为1的话就直接输出upper的个数{printf("%lld",upper);return 0;}if(a<=upper) ans=(upper-a)/b+1; //求项数公式(条件是首项小于末项)if(d==1) //如果这里不特别判断的话下面有可能会进入死循环{if(((c-a)%b!=0&&c<=upper)||(c<a&&c<=upper)) ans++; //判断在不在a的等差数列中printf("%lld",ans);return 0;}for(long long i=c;i<=upper;i*=d) //模拟if((i-a)%b!=0||i<a) ans++;printf("%lld",ans);return 0;
}

jzoj数列【数学】【模拟】相关推荐

  1. JSK-337 汽水瓶【数学+模拟】

    汽水瓶 有这样一道智力题:"某商店规定:三个空汽水瓶可以换一瓶汽水.小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?"答案是 5 瓶,方法如下:先用 9 个空瓶子换 3 瓶汽水, ...

  2. Python水仙花数,鸡兔同笼问题,百钱买百鸡问题,斐波那契数列,模拟发微信红包

    一.题目: 1.求50以内能被7整除,但不能同时被5整除的所有整数. 2.如果一个3位数的各位数字的立方和等于该数自身,则该数称为"水仙花数". 例如,153 = 13 + 53  ...

  3. 洛谷P1667/[10.22 模拟赛] 数列 (思维+模拟)

    洛谷P1667 数列 题目描述 给定一个长度是n的数列A,我们称一个数列是完美的,当且仅当对于其任意连续子序列的和都是正的.现在你有一个操作可以改变数列,选择一个区间[X,Y]满足\(A_X +A_{ ...

  4. [蓝桥杯2015决赛]奇怪的数列-双指针+模拟

    题目描述 从X星截获一份电码,是一些数字,如下: 13 1113 3113 132113 1113122113 - YY博士经彻夜研究,发现了规律: 第一行的数字随便是什么,以后每一行都是对上一行&q ...

  5. [jzoj 6093] [GDOI2019模拟2019.3.30] 星辰大海 解题报告 (半平面交)

    题目链接: https://jzoj.net/senior/#contest/show/2686/2 题目: 题解: 说实话这题调试差不多花了我十小时,不过总算借着这道题大概了解了计算几何的基础知识 ...

  6. [JZOJ 5909] [NOIP2018模拟10.16] 跑商(paoshang) 解题报告 (圆方树)

    题目链接: https://jzoj.net/senior/#contest/show/2529/2 题目: 题目背景: 尊者神高达很穷,所以他需要跑商来赚钱 题目描述: 基三的地图可以看做 n 个城 ...

  7. CF 990A. Commentary Boxes【数学/模拟】

    [链接]:CF [题意]:对于一个数n,每次加一的代价是a,每次减一的代价是b,求被m整除时的最小代价. [分析]:分情况讨论,自己多举几个栗子. [代码]: #include<cstdio&g ...

  8. [JZOJ 5911] [NOIP2018模拟10.18] Travel 解题报告 (期望+树形DP)

    题目链接: http://172.16.0.132/senior/#contest/show/2530/1 题目: EZ同学家里非常富有,但又极其的谦虚,说话又好听,是个不可多得的人才.       ...

  9. JZOJ.4377[GDOI2016模拟3.10]习用之语 解题报告

    习用之语 题目大意 给出 N N个长度为4的字符串,求出仅差DD个字符的字符串的对数. 输入格式 第一行两个正整数 N N,DD. 接下来 N N行,每行一个长度为4的字符串. 输出格式 一行,一个整 ...

最新文章

  1. equals()与hashCode()
  2. 说人话,搜代码,Facebook发布神经代码搜索数据集+benchmark
  3. 输入框中默认的值,判断是否输入内容
  4. velocity 基础指令
  5. 有待试用,查看是谁锁住了我的数据库
  6. windows dos命令窗口的环境变量
  7. python读取第二行_从CSV文件读取第二行到Python
  8. map与unordered_map
  9. 作者:季统凯(1972-),男,博士,中国科学院云计算产业技术创新与育成中心研究员...
  10. linux运维常见英文报错中文翻译(菜鸟必知)
  11. Akka Remote Actor_简单示例二
  12. Linux课程设计:Linux系统下多进程的创建与通信
  13. 微软笔记本服务器怎么重装系统,微软Surface Book重装win10系统教程
  14. 1588 1-Step 和 2-Step PTP 之间有什么区别?
  15. switch开关语句
  16. ios 实用求职面试题
  17. 新生宝宝办证-STEP1-出生证明办理
  18. C++:实现一些简单的方法来 布莱克-斯科尔斯期权估值理论(附完整源码)
  19. oracle 查找序列号,Oracle 查找丢失数据序列号
  20. 【二叉树】515. 在每个树行中找最大值

热门文章

  1. 手机算命源码(Windows mobile SDK 5)
  2. windiws本地安全策略及组策略配置实验
  3. 死锁产生的原因和必要条件详解
  4. 从养狗到放弃要几天?
  5. 数据库期末考试,选择、判断、填空题汇总
  6. C#.Net窗体应用程序之实现飞行棋(两人对弈)
  7. 3.1 Forwards and Futures
  8. java http 源码_httpclient下载网页源码---java基础爬虫
  9. 用于C++项目的vim配置
  10. C语言 | 10 结构体与共同体