标签:
佩尔方程x*x-d*y*y=1,当d不为完全平方数时,有无数个解,并且知道一个解可以推其他解。 如果d为完全平方数时,可知佩尔方程无解。
假设(x0,y0)是最小正整数解。
则:
xn=xn-1*x0+d*yn-1*y0
yn=xn-1*y0+yn-1*x0
证明只需代入。 如果忘记公式可以自己用(x0*x0-d*y0*y0)*(x1*x1-d*y1*y1)=1 推。
这样只要暴力求出最小特解,就可以用快速幂求出任意第K个解。
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 2813 | Accepted: 1568 |
Description
6 8
35 49
Input
Output
Sample Input
Sample Output
6 8 35 49
这题可以得到佩尔方程s*s-8*t*t=1 ,s=2n+1,t=x (n表示总长,x表示取的n中某个位置)
s0=3,t0=1 然后就很好弄了
#include <iostream> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> #include <algorithm> using namespace std; int main(int argc, const char * argv[]) { long long s0=3; long long t0=1; long long s1=3; long long t1=1; for(int i=1;i<=10;i++) { long long s,t; s=s1*s0+8*t1*t0; t=t1*s0+t0*s1; s1=s; t1=t; printf("%10lld%10lld\n",t,(s-1)/2); //cout<<t<<" "<<(s-1)/2<<endl; } return 0; }
这题用暴力然后打表也是可以0MS过的。
标签:
原文地址:http://www.cnblogs.com/chenhuan001/p/5009892.html