1. 程式人生 > >UVA - 12169 -擴充套件歐幾里得演算法

UVA - 12169 -擴充套件歐幾里得演算法

#include<iostream>
#include<string.h>
#include<algorithm>
#include<stdio.h>
#define ll long long
#define rep(i,j,k) for(int i=j;i<=k;++i)
using namespace std;
const int maxx = 1e4+7;
ll a[maxx];
void ex_gcd(ll a,ll b,ll &d,ll &x,ll &y)
{
    if (!b)
    {
        d
=a; x=1; y=0; } else { ex_gcd(b,a%b,d,y,x); y-=x*(a/b); } } int main() { int n; while(~scanf("%d",&n)) { memset(a,0,sizeof(a)); for (int i=1; i<=2*n; i+=2) { scanf("%lld",&a[i]); } ll d,k,b; rep(i,
0,10000) { ex_gcd(10001,i+1,d,k,b); ll c=(a[3]-(ll)i*i*a[1]);//等式左邊 b=b*c/d;//解數字解 if(c%d==0) { int flag; rep(j,2,2*n) { flag=1; ll tmp=(i*a[j-1]+b)%10001;
if (j%2==1) { if (tmp!=a[j]) { flag=0; break; } }else { a[j]=tmp; } } if (flag) { break; } } else { continue; } } for (int i=2;i<=2*n;i+=2){ printf("%lld\n",a[i]); } } return 0; }