zoukankan      html  css  js  c++  java
  • POJ2115解题报告【拓展欧几里得模板题】

    题目地址:

      http://poj.org/problem?id=2115

    题目概述:

      求解线性同余方程:

    大致思路:

      这是个模板题,用拓展欧几里得即可解决。

    代码:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstdlib>
     4 #include <cmath>
     5 #include <vector>
     6 #include <ctime>
     7 #include <map>
     8 #include <stack>
     9 #include <set>
    10 #include <queue>
    11 #include <cstring>
    12 #include <algorithm>
    13 using namespace std;
    14 
    15 #define sacnf scanf
    16 #define scnaf scanf
    17 #define maxn 47780
    18 #define maxm 35
    19 #define inf 1061109567
    20 #define Eps 0.000001
    21 const double PI=acos(-1.0);
    22 #define mod 1000000007
    23 #define MAXNUM 10000
    24 void Swap(int &a,int &b) {int t=a;a=b;b=t;}
    25 int Abs(int x) {return (x<0)?-x:x;}
    26 typedef long long ll;
    27 
    28 ll P[maxm];
    29 
    30 ll ex_gcd(ll a,ll b,ll &x,ll &y)
    31 {
    32     if(b==0) {x=1;y=0;return a;}
    33     ll ans=ex_gcd(b,a%b,x,y);
    34     ll temp=x;x=y;y=temp-(a/b)*y;
    35     return ans;
    36 }
    37 
    38 int main()
    39 {
    40     //freopen("data.in","r",stdin);
    41     //freopen("data.out","w",stdout);
    42     //clock_t st=clock();
    43     ll a,b,c,m,x,y;int k;
    44     P[0]=1;for(int i=1;i<=32;i++) P[i]=P[i-1]*2;
    45     while(~scanf("%lld%lld%lld",&a,&b,&c))
    46     {
    47         scanf("%d",&k);
    48         if(a==0&&b==0&&c==0&&c==0) break;
    49         m=P[k];b=(b-a+m)%m;ll p=ex_gcd(c,m,x,y);
    50         if(b%p!=0) printf("FOREVER
    ");
    51         else
    52         {
    53             ll q=m/p;
    54             ll ans=(b/p*x%q+q)%q;
    55             printf("%lld
    ",ans);
    56         }
    57     }
    58     //clock_t ed=clock();
    59     //printf("
    
    Time Used : %.5lf Ms.
    ",(double)(ed-st)/CLOCKS_PER_SEC);
    60     return 0;
    61 }
  • 相关阅读:
    POJ 3186 Treats for the Cows
    HDU 1226 超级密码| NYOJ 929 密码宝盒
    POJ 1661 Help Jimmy
    POJ 1458 Common Subsequence
    POJ 1015 Jury Compromise
    window.history,页面中的返回按钮
    网站新功能引导镂空效果
    HTML5存储
    JSON对象
    点击超链接,将页面中某个数据传到另一个页面
  • 原文地址:https://www.cnblogs.com/CtrlKismet/p/6877099.html
Copyright © 2011-2022 走看看