hdoj5793 A Boring Question【找规律】
找出的规律。。。。
1 2
3
2 2
7
3 2
15
4 2
31
5 2
63
1 3
4
2 3
13
3 3
40
4 3
121
5 3
361
然后我们来推个公式:
比如说a2=3a1+1,
我们可以看到
等比是m,
然后凑一下,
1+x=m*x
x=1/(m-1)
上面那个例子就凑成了这个样子,
(a2+1/2)/(a1+1/2)=3
所以首项是:m+1+[1/(m-1)]
第n项是:[m+1+1/(m-1)]*m^(n-1)
答案是:[m+1+1/(m-1)]*m^(n-1)-1/(m-1);
那么答案就是:[m^(n+1)-1]/(m-1);
mdzz,我真蠢。
巨巨加油~
23333333333,神队友去写然后wa了。。。。
除法还要逆元,求逆元有两种方法,一个就是扩展欧几里得,另一个有点特殊,就是费马小定理。
复习一下:
因为取膜不适用与除法,所以当我们要求(a/b)mod p的时候呢,要拐个弯,求一下b的逆元,其实说白了,在算式里,小白理解就是他的倒数嘛。
那么就是b*k=1;k=1/b;
带入(a/b) mod p,就是(a*k)mod p,取膜适用乘法~好,我们来求逆元。
算b的逆元k,k=1/b;我来转换一下,就是直接设成这样的,k=(px+1)/b;然后带到(a*k)mod p,得(a/b)mod p;
那么就是直接求个k就好啦,然而 k=(p*x+1)/b;把 b 一移得 k*b-p*x=1;这种形式的不定方程???怎么求啊,exgcd…
在exgcd中,k,x都是未知数,然后b,-p是常量,跑一跑exgcd就好啦。
然后我再温习一下exgcd吧。
首先给出适用条件,对于这种单纯利用exgcd的题,这个条件也是切入点啊。对于不定整数方程AX+BY=C,若 C mod gcd(A, B)=0,则该方程存在整数解,否则不存在 x , y 整数解。
在我们这个求逆元环节中,A=b,B=-p,很明显在我们本道题里,p是1e9+7是素数,那么gcd就=1,所以满足。
然后exgcd的推导?额。。。接下来会看的很烦,而且没有乘号但是。。我觉得读者在草稿纸上列个小公式会很清楚的。
对于ax+by=gcd(a,b);
我们设一下a>b,在简单直接把b=0时,gcd(a,b)=a.此时,x=1,y=0;
接着,a>b>0,我们这里可以摆两个式子:①:ax1+by1=gcd(a,b);继续,②:bx2+(a mod b)y2=gcd( b , a mod b );第二个式子为何呢?这就是gcd的辗转相除法的算法啊。而且gcd(a,b)=gcd(b,a mod b);
然后我们就能将gcd左边两个等式列个等式:ax1+by1=bx2+(a mod b)y2;额。。。a mod b可以写成?a-(a/b)b对吧,那么等式变成ax1+ by1= bx2+ (a - (a / b) * b)y2=bx2+ay2 - (a / b)by2 ;我们把ax1+ by1=bx2+ay2 - (a / b)by2拎出来,整理一下,写成:ax1+by1=ay2+b(x2-(a/b)y2); 那么很明显我们可以得到,x1=y2,y1=x2-(a/b)y2;
这样我们就得到了求解 x1,y1 的方法:x1,y1 的值基于 x2,y2.
然后跑的不就是gcd辗转相除法嘛,那么最后一个不定方程不就是b==0的时候return,那个时候x=1,y=0啊,正好递归回来给了前面的x1,y1,一直递归到最开始的不定方程的x1,y1.OK,讲完。
还是自己再温习一个前面说的费马小定理,
以下懒得打了,去某篇大牛blog选摘来的…
费马小定理说,对于素数 M 任意不是 M 的倍数的 b,都有:b ^ (M-1) = 1 (mod M).直接拆成:b * b ^ (M-2) = 1 (mod M)。于是:a / b = a / b * (b * b ^ (M-2)) = a * (b ^ (M-2)) (mod M),但是用费马小定理!!!首先的条件!!!!原blog没讲,mdzz。。。
百度百科倾情奉献:费马小定理(Fermat Theory)是数论中的一个重要定理,其内容为: 假如p是质数,且gcd(a,p)=1,那么 a^(p-1)≡1(mod p)。刚好在本道题目一样适用,mod=1e9+7就是质数,那么gcd也就是=1,OK,那么b*k=1这个逆元k=b^(mod-2) = =好像就是这样。
当当当当,看到这边的小伙伴将会得到本道题的最终答案(我知道没有。。。自high一下。。。):
[m^(n+1)-1]*(m-1)^(mod-2)
最终AC代码?自己写吧。。。一个快速幂,,,就好了。。。套个小公式而已,自己动手~丰衣足食~
hdoj5793 A Boring Question【找规律】的更多相关文章
- HDU 5793 A Boring Question (找规律 : 快速幂+乘法逆元)
A Boring Question Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- hdu_5793_A Boring Question(打表找规律)
题目链接:hdu_5793_A Boring Question 题意: 自己看吧,说不清楚了. 题解: 打表找规律 #include<cstdio> typedef long long l ...
- HDU 5793 A Boring Question (找规律 : 快速幂+逆元)
A Boring Question 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5793 Description Input The first l ...
- HDU 5793 A Boring Question ——(找规律,快速幂 + 求逆元)
参考博客:http://www.cnblogs.com/Sunshine-tcf/p/5737627.html. 说实话,官方博客的推导公式看不懂...只能按照别人一样打表找规律了...但是打表以后其 ...
- hdu 5793 A Boring Question(2016第六场多校)
A Boring Question Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- HDU 4861 Couple doubi (数论 or 打表找规律)
Couple doubi 题目链接: http://acm.hust.edu.cn/vjudge/contest/121334#problem/D Description DouBiXp has a ...
- HDU 4861 Couple doubi(找规律|费马定理)
Couple doubi Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit ...
- hdu 2865 Polya计数+(矩阵 or 找规律 求C)
Birthday Toy Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- HDU 4349 Xiao Ming's Hope 找规律
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4349 Xiao Ming's Hope Time Limit: 2000/1000 MS (Java/ ...
随机推荐
- mui + vue 模板
示例代码: (function(mui, doc) { // 定义全局变量(计时器) var timer; // mui初始化 mui.init(); // 创建vue的实例 var app = ne ...
- Elasticsearch 之 慘痛部署(分片移位)
部署说明 硬件 server两台: 机器A:64G内存 机器B:32G内存 分片 共12个节点 2个查询节点.10个存储节点 8个主分片 1个复制分片(每一个分片都有一个副本分布在不同的节点上面) 每 ...
- JavaScript 刚開始学习的人应知的 24 条最佳实践
原文:24 JavaScript Best Practices for Beginners (注:阅读原文的时候没有注意公布日期,认为不错就翻译了,翻译到 JSON.parse 那一节认为有点不正确路 ...
- 设计模式入门之訪问者模式Visitor
//訪问者模式定义:表示一个作用于某对象结构中的各个元素的操作,它使你能够在不改变各元素类的前提下定义作用于这些元素的新操作. //从定义上看.这个模式跟装饰模式的定义非常类似(动态地给一个对象加入一 ...
- ConcurrentHashMap源代码解析
这些天一直在看集合相关的源代码.确实学到了不少东西.这些集合都是息息相关的,学了就停不下来! 学集合就必须要学习锁的知识.学了锁那么并发编程的知识也不能少,都是非常重要的基础知识. jdk1.8的源代 ...
- 第六十题(在O(1)时间内删除链表结点)
题目:给定链表的头指针和一个结点指针,在O(1)时间删除该结点. 思路:将待删除节点下一个节点的数据赋给当前节点.删除下一个节点就可以.
- Vue生命周期方法。
- 项目Alpha冲刺(团队8/10)
项目Alpha冲刺(团队8/10) 团队名称: 云打印 作业要求: 项目Alpha冲刺(团队) 作业目标: 完成项目Alpha版本 团队队员 队员学号 队员姓名 个人博客地址 备注 221600412 ...
- 使用C语言获取字符串或文件的MD5值
libmd5地址:https://sourceforge.net/projects/libmd5-rfc/ MD5Demo1.c #include <stdio.h> #include & ...
- map数据的分组,list数据排序 数据筛选
sfit0144 (李四) 2015-01-10 18:00:251Sfit0734 (Sfit0734) 2015-01-10 18:00:38go homesfit0144 (李四) 2015-0 ...