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/ ...
随机推荐
- html中跳转方法(含设定时间)
脚本方式 如: <script language="JavaScript" type="text/JavaScript"> <!-- wind ...
- Elasticsearch 学习笔记 Elasticsearch及Elasticsearch head安装配置
一.安装与配置 1.到官网下载Elasticsearch,https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6. ...
- GTK入门学习:布局容器之水平布局
假设我们希望窗体里多放加入几个控件,直接加入是不成功的.由于窗体仅仅能容纳一个控件的容器. 这时候.我们须要借助布局容器,我们先把布局容器加入到窗体里.然后再把所须要加入的控件放在布局容器里. 布局容 ...
- Redis+EJB实现缓存(一)
上篇博客大概的对Redis做了一个主要的了解.由于刚刚接触自己也不太明确.所以上篇博客写的乱七八糟的.这篇由于项目须要,学习了一下Redis和EJB集成. 如今脑子相对照较清晰了一些. 实现思 ...
- 在VC中动态加载ODBC的方法
在使用VC.VB.Delphi等高级语言编写数据库应用程序时,往往需要用户自己在控制面板中配置ODBC数据源.对于一般用户而言,配置ODBC数据源可能是一件比较困难的工作.而且,在实际应用中,用户往往 ...
- 修复Xcode升级错误 — PCH File Error
http://www.rockia.net/2013/03/fix-xcode-update-pch-file-error Error:PCH File Built From A Different ...
- 使用JavaScript获取浏览器Chrome版本信息
Navigator对象包含了有关浏览器的信息 可通过访问其属性appVersion或userAgent来获取浏览器Chrome版本 例如,我所使用的QQ浏览器的appVersion和userAgent ...
- python 2: 解决python中的plot函数的图例legend不能显示中文问题
问题: 图像标题.横纵坐标轴的标签都能显示中文名字,但是图例就是不能显示中文,怎么解决呢? 解决: plt.figure() plt.title(u'训练性能', fontproperties=f ...
- swt_table 回车可编辑Esc取消
package 宿舍管理系统; import java.util.Hashtable; import org.eclipse.swt.SWT; import org.eclipse.swt.custo ...
- 如何在 Ubuntu 云服务器上部署自己的 Rails 应用
安装步骤 参考:https://ruby-china.org/topics/32851 在云服务器上安装Ruby|Rails : http://www.cnblogs.com/znsongshu/p ...