E - X-Sequence

Time Limit:500MS     Memory Limit:4096KB     64bit IO Format:%I64d
& %I64u

Description

Let {xi} be the infinite sequence of integers: 

1) x0 = A; 

2) xi = (alpha * xi-1^2 + beta * xi-1 + gamma) mod M, for i >= 1. 

Your task is to find xk if you know A, alpha, beta, gamma, M and k.

Input

Given A (1 <= A <= 10000), alpha (0 <= alpha <= 100), beta (0 <= beta <= 100), gamma (0 <= gamma <= 100), M (1 <= M <= 1000), k (0 <= k <= 10^9). All numbers are integer.

Output

Write xk.

Sample Input



Input

1 1 1 1 10 1
Output

3

题意:

令X0=A

Xi=(a*Xi-1^2,b*Xi-1+c)%m;

求Xk,(0<=k<=109),(0<=a,b<=100),(1<m<1000);


Solution:

题目的关键在于m的范围,1000的范围显然是会在取余后出现循环的。

只要得出循环的数列的长度以及它的每一个数,和任意一个循环的起点位置。就可以算出X值。

要注意的是X是不对m取余的,还有当X0很大时,计算X的中间量是有可能超过int范围的。

code:

#include<stdio.h>
#include<string.h>
int main()
{
int A, alpha, beta, gamma, M , k;
int loop,i,t;
int num[1010];
int visit[10100];//注意这里要开10000+虽然用的个数不超过1000个只是因为A<=10000
//visit用来标记是否num[i]的值是否出现过即visit[num[i]]是否是-1
//因为M<1000 所以会在至多1000个数开始出现循环
while(~scanf("%d%d%d%d%d%d",&A,&alpha,&beta,&gamma,&M,&k))
{ memset(visit,-1,sizeof(visit));
num[0]=A;visit[A]=0;
for(i=1;;i++)
{
num[i]=alpha*num[i-1]%M*num[i-1]%M+beta*num[i-1]%M+gamma%M;
num[i]%=M;
if(visit[num[i]]!=-1){
/* loop=i; //i 个开始出现循环 k(i)(visit[num[i]])= 0 1 2 3 4 5 6 7
注意这里这样是错的, 它循环可能是中间出现循环如 (num[i]) 9 7 8 4 5 6 8 4 (6-2)
所以这样记录的个数不是i个, 固修改如下
*/
loop=i-visit[num[i]]; //这样loop正好为循环个数
t=visit[num[i]];//表示循环列前面还有的个数
break;
}
else visit[num[i]]=i; // }
if(k<visit[num[i]])printf("%d\n",num[k]); //如果k未出现循环
else printf("%d\n",num[(k-t)%loop+t]); } return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

SGU 181 X-Sequence(一题比较水的求模找规律)的更多相关文章

  1. HDOJ1021题 Fibonacci Again 应用求模公式

    Problem Description There are another kind of Fibonacci numbers: F(0) = 7, F(1) = 11, F(n) = F(n-1) ...

  2. HDU 5703 Desert 水题 找规律

    已知有n个单位的水,问有几种方式把这些水喝完,每天至少喝1个单位的水,而且每天喝的水的单位为整数.看上去挺复杂要跑循环,但其实上,列举几种情况之后就会发现是找规律的题了= =都是2的n-1次方,而且这 ...

  3. 每日一刷(2018多校水题+2016icpc水题)

    11.9 线段树 http://acm.hdu.edu.cn/showproblem.php?pid=6315 求逆序对个数 http://acm.hdu.edu.cn/showproblem.php ...

  4. SGU 107 987654321 problem【找规律】

    题目链接: http://acm.sgu.ru/problem.php?contest=0&problem=107 题意: 平方后几位为987654321的n位数有多少个 分析: 虽然说是水题 ...

  5. 暑假集训 #3div2 C Sequence 数字找规律

    C. Sequence (64 Mb, 1 sec / test)Integer sequences are very interesting mathematical objects. Let us ...

  6. 找规律 SGU 126 Boxes

    题目地址:http://acm.sgu.ru/problem.php?contest=0&problem=126 /* 找规律,智商不够,看了题解 详细解释:http://blog.csdn. ...

  7. HDU1005Number Sequence(找规律)

    Number Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  8. HDU 4572 Bottles Arrangement(找规律,仔细读题)

    题目 //找规律,123321123321123321…发现这样排列恰好可以错开 // 其中注意题中数据范围: M是行,N是列,3 <= N < 2×M //则猜测:m,m,m-1,m-1 ...

  9. hdu 1005 Number Sequence(矩阵快速幂,找规律,模版更通用)

    题目 第一次做是看了大牛的找规律结果,如下: //显然我看了答案,循环节点是48,但是为什么是48,据说是高手打表出来的 #include<stdio.h> int main() { ], ...

随机推荐

  1. 关于Spring配置文件提示的插件下载

    1.springsource-tool-suite-update 最新各个版本下载地址 第一种方式: springsource-tool-suite-3.7.3.RELEASE-e4.5.2-upda ...

  2. JQuery 同时获取多个标签的指定内容并储存为数组

    在网页开发中经常会碰到获取同种类型的 标签 的值得问题,比如下面的两种情况. 当需要批量获取同种标签的指定值时,新人就会碰上一点小麻烦. 比如 id=problem1的demo var list1=$ ...

  3. elasticsearch简单的安装以及集群配置详解

    首先要确保有java8的环境,安装方法如下(centos) wget --no-check-certificate --no-cookies --header "Cookie: oracle ...

  4. Docker Toolbox下配置国内镜像源-阿里云加速器

    Docker machine安装 Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox. Digital ...

  5. 利用python操作mrjob实例---wordcount

       网上利用java实现mr操作实例相对较多,现将python实现mr操作实例---Wordcount分享如下: 在操作前,需要作如下准备: 1.确保linux系统里安装有python3.5,pyt ...

  6. 【C】对指针表达式的个人总结与思考

    本文内容参考<c 和 指针>. 声明:本博文只为那些能沉得住气,认真研究,探索真知的人参考,浮躁的人请离开,因为看不懂. 感觉以前学c的时候,学的指针真是白学了,今天看到这个内容,困惑后, ...

  7. 20155217 2016-2017-2 《Java程序设计》第3周学习总结

    20155217 2016-2017-2 <Java程序设计>第3周学习总结 教材学习内容总结 第四章 要产生对象必须先定义类,类定义时使用class关键词,建立实例要使用new关键词. ...

  8. 20155227 2016-2017-2 《Java程序设计》实验一 Java开发环境的熟悉(Windws + IDEA)实验报告

    20155227 2016-2017-2 <Java程序设计>实验一 Java开发环境的熟悉(Windws + IDEA)实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: ...

  9. day1 函数 (独立功能代码块)

    1.引入函数 2.函数执行过程 4.带参数的函数 5.带返回值的函数 6. 多个返回值 (return a,b,c)元组 7.4种函数 1.引入函数 独立功能代码块 ---> 封装 ----&g ...

  10. cf 448c Painting Fence

    http://codeforces.com/problemset/problem/448/C 题目大意:给你一个栅栏,每次选一横排或竖排染色,求把全部染色的最少次数,一个点不能重复染色. 和这道题有点 ...