HDU3292 No more tricks, Mr Nanguo滥竽充数 特殊不定方程 + 矩阵应用
来源:互联网 发布:windows program files 编辑:程序博客网 时间:2024/06/11 02:42
好题目!过的人比较少,不过咱还是过了,所以没关系,题目的综合力很好,题目讲的是南郭先生的故事,
题意:
国王喜欢听演奏,他喜欢的一个正方形 每行X个人来演奏,后来他挂了,他儿子喜欢 把原来的正方形拆成若干个小正方形,南郭很害怕,所以跑路了,他跑了以后,新的国王发现剩下的人刚好可以分成每组Y^2个人的 N组
总是做算法,不如来个陶冶情操的文章一篇: http://www.sanwen.net/subject/3628849/
所以我们可以得到一个方程X^2 - 1 == N * Y^2,那么其实就是求解方程X^2 - N * Y^2 ==1,
如果n是完全平方数的话 肯定是无解的,
有解的话就用矩阵来暴力求解
矩阵给出
求出方程第K大的解就可以了
#include<iostream>#include<cstdio>#include<list>#include<algorithm>#include<cstring>#include<string>#include<queue>#include<stack>#include<map>#include<vector>#include<cmath>#include<memory.h>#include<set>#define ll long long#define eps 1e-8#define inf 0xfffffff//const ll INF = 1ll<<61;using namespace std;//vector<pair<int,int> > G;//typedef pair<int,int > P;//vector<pair<int,int> > ::iterator iter;////map<ll,int >mp;//map<ll,int >::iterator p;const int MOD = 8191;const int M = 2;typedef struct Matrix {int m[4][4];};Matrix per,d;int x,y,n,k;void init() {y = 1;while(true) {x = (ll)sqrt(n * y * y * 1.00 + 1.00);if(x * x - n * y * y == 1)break;y++;}}void clear() {for(int i=0;i<M;i++) for(int j=0;j<M;j++)per.m[i][j] = (i == j);//单位矩阵d.m[0][0] = x%MOD;d.m[0][1] = n*y%MOD;d.m[1][0] = y%MOD;d.m[1][1] = x%MOD;}Matrix multi(Matrix a,Matrix b) {Matrix ans;for(int i=0;i<M;i++) {for(int j=0;j<M;j++) {ans.m[i][j] = 0;for(int k=0;k<M;k++)ans.m[i][j] += a.m[i][k] * b.m[k][j];ans.m[i][j] %= MOD;}}return ans;}Matrix quick() {Matrix p = d,ans = per;while(k) {if(k&1) {ans = multi(ans,p);k--;}k >>= 1;p = multi(p,p);}return ans;}int main() {while(scanf("%d %d",&n,&k) == 2) {int tmp = (int)sqrt(n*1.00);if(tmp * tmp == n) {puts("No answers can meet such conditions");continue;}init();clear();k--;d = quick();int ans = (d.m[0][0]*x%MOD + d.m[0][1]*y%MOD + MOD)%MOD;printf("%d\n",ans);}return EXIT_SUCCESS;}
1 0
- HDU3292 No more tricks, Mr Nanguo滥竽充数 特殊不定方程 + 矩阵应用
- hdu 3292 No more tricks, Mr Nanguo pell方程+矩阵快速幂
- HDU 3292 No more tricks, Mr Nanguo 矩阵快速幂求佩尔方程第k大的解
- HDU 3292 No more tricks, Mr Nanguo(佩尔方程,矩阵快速幂)
- hdu 3292 No more tricks, Mr Nanguo(矩阵快速幂解佩尔方程)
- HDU 3292(No more tricks, Mr Nanguo 佩尔方程矩阵快速幂求解)
- HDU 3292 No more tricks, Mr Nanguo [佩尔方程+矩阵]【数论】
- HDU 3292 No more tricks, Mr Nanguo(佩尔方程)
- HDU 3292 No more tricks, Mr Nanguo(佩尔方程)
- Hdu 3292 No more tricks, Mr Nanguo
- hdu 3292 No more tricks, Mr Nanguo
- hdu 3292——No more tricks, Mr Nanguo
- POJ1320 Street Numbers 佩尔方程 特殊的不定方程的应用
- 解特殊不定方程:毕达哥拉斯三元组
- FZU1669 Right-angled Triangle 本原毕达哥斯拉三元组 特殊不定方程的应用
- 特殊的不定方程——佩尔方程
- poj1091 跳蚤 解不定方程的应用
- hdu3292
- Linux常识:系统负载Load average
- 九度 1389
- 2520 我是菜鸟,我怕谁
- 《深入理解Android:Wi-Fi,NFC和GPS》章节连载[节选]--第七章 深入理解Wi-Fi P2P
- 常用排序算法总结
- HDU3292 No more tricks, Mr Nanguo滥竽充数 特殊不定方程 + 矩阵应用
- c笔试面试 之 不用除法操作实现两个正整数的除法
- Apache HTTP Server 与 Tomcat 的三种连接方式介绍
- QT入门-主窗口设置背景颜色和背景图片
- google map api
- 蓝桥杯 - 算法训练 - ALGO - 6 安慰奶牛(克鲁斯卡尔)
- Collection <GenericItemSimilarity.ItemItemSimilarity> correlations = ...;
- Python下的中文分词实现
- qtp初学可能遇到问题1:spy识别对象失败