POJ 1320 Street Numbers Pell方程
2024-08-27 12:25:54
http://poj.org/problem?id=1320
题意很简单,有序列 1,2,3...(a-1),a,(a+1)...b 要使以a为分界的 前缀和 和 后缀和 相等 求a,b
因为序列很特殊所以我们用数学方法就可以解决 :
求和: a*(a-1)/2 = (a+1+b)(b-a)/2
化简: 2a2 = b2 + b
两边乘4,构造完全平方项 (2b+1)2 - 8a2 = 1
令 x = 2*b+1;
y = a;
我们就得到了一个形如Pell方程x2 - Dy2 = 1 的式子 x2 - 8y2 = 1
这题就是求Pell方程的第K个解 , 因为方程已经告诉你了
所以我们可以目测出最小解以用来构造矩阵来求出后面的解
下面就是构造系数矩阵的方法:
已知Pell方程为 x2 - Dy2 = 1
为了得到第k个解,我们需要构造系数矩阵
为了得到系数矩阵,我们必须知道该方程的最小特解 x0,y0
于是我们就能得到系数矩阵:
xk yk 就是Pell方程的第k个解
对于Pell方程最小特解的求法,可以参照我上一篇 http://www.cnblogs.com/Felix-F/p/3222741.html
当然这题一眼就能看出最小特解为x=3,y=1
用矩阵快速幂小加了一下速 (应该是逗比了..这样反而复杂度高了....直接记录各层次的矩阵就行...
struct matrix
{
LL ma[][];
};
int n = ;
matrix operator * (matrix a,matrix b)
{
matrix temp;
memset(temp.ma,,sizeof(temp.ma));
for(int i = ; i < n ; i++)
for(int j = ; j < n ; j++)
for(int k = ; k < n ; k++)
temp.ma[i][j] = temp.ma[i][j] + (a.ma[k][i] * b.ma[j][n-k-]);
return temp;
}
matrix operator + (matrix a,matrix b)
{
for(int i = ; i < n ; i++)
for(int j = ; j < n ; j++)
a.ma[i][j] = (a.ma[i][j] + b.ma[i][j]) ;
return a;
}
matrix m_pow(matrix a,int n)
{
if(n == ) return a;
matrix temp = m_pow(a,n/);
if(n & ) return temp * temp * a;
else return temp * temp ;
}
int main()
{
matrix a;
a.ma[][] = ;
a.ma[][] = ;
a.ma[][] = ;
a.ma[][] = ;
for(int i = ;i <= ; i++)
{
matrix tmp = m_pow(a,i);
LL s1 = tmp.ma[][] * + tmp.ma[][] * ;
LL b = (s1-)/;
LL s2 = tmp.ma[][] * + tmp.ma[][] * ;
LL a = s2;
printf("%10.lld%10.lld\n",a,b);
}
return ;
}
最新文章
- android 插件化 模块化开发
- Adapter 适配器模式
- Ruby on Rails Session 1: How to Build a Ruby on Rails on the Ubuntu.
- mycat实例(2)
- 修改数据库用户名--CMD环境执行有效
- stl string常用函数
- Nginx集群之WCF大文件上传及下载(支持6G传输)
- 复习HTML+CSS(6)
- LeetCode【101. 对称二叉树】
- Servlet中response、request乱码问题解决
- win7安装linux CentOS7双系统实践
- Codeforces.472F.Design Tutorial: Change the Goal(构造 线性基 高斯消元)
- 第三次spring会议
- c++ 出现“ error LNK2019: 无法解析的外部符号 该符号在函数 中被引用";错误原因
- 20170720 Celery 异步任务处理到Sql Server 发生死锁
- POJ3111 K Best 2017-05-11 18:12 31人阅读 评论(0) 收藏
- 利用mask-image蒙层编写异形头像
- [Opencv]图像的梯度与边缘检测(转)
- js:自动亮起100盏灯
- CentOS7下开启端口
热门文章
- 多client并发登录
- 21. 【intellij idea】Project Structure 讲解
- WebServic调用天气预报服务
- 多校-HDU 5351 MZL&#39;s Border 数学规律
- Linux桌面词典 星际译王(StarDict)
- 为什么linux驱动中变量或者函数都用static修饰?(知乎问题)
- 5G时代即将到来,有线网络WiFi会消失不见吗?
- b模式处理文件
- python 发送邮件 <;QQ+腾讯企业邮箱>;
- 紫书 例题 9-12 UVa 12186 (树形dp)