zoukankan      html  css  js  c++  java
  • NOIP2012 同余方程 题解

    描写叙述

    求关于x的同余方程ax ≡ 1 (mod b)的最小正整数解。

    格式

    输入格式

    输入仅仅有一行,包括两个正整数a, b,用一个空格隔开。

    输出格式

    输出仅仅有一行,包括一个正整数x0。即最小正整数解。

    输入数据保证一定有解。

    例子1

    例子输入1[复制]

    3 10

    例子输出1[复制]

    7

    限制

    每一个測试点1s

    提示

    对于40%的数据,2 ≤b≤ 1,000; 
    对于60%的数据,2 ≤b≤ 50,000,000; 
    对于100%的数据,2 ≤a, b≤ 2,000,000,000。

    分析:

    解同余方程。比較水

    欧几里德算法

    program mod1;
    var
    a,b,x,y:longint;
    procedure gcd(a,b:longint);
    var t:longint;
    begin
    if b<>0
    then gcd(b,a mod b)
    else begin
    x:=1;
    y:=0;
    exit;
    end;
    t:=x;
    x:=y;
    y:=t-(a div b)*y;
    end;
    begin
    readln(a,b);
    gcd(a,b);
    //writeln(x,' ',y);
    writeln(((x mod b)+b)mod b);
    end.

    代码二:

    program mod2;
    procedure oujilide(a,b:int64;var d,x,y:int64);


    begin
      if b=0 then
      begin
      d:=a;
      x:=1;
      y:=0;
      end
      else
      begin
      oujilide(b,a mod b,d,y,x);
      y:=y-x*(a div b);end;
    end;
    var
      a,b,d,x,y:int64;
    begin
      assign(input,'mod.in');
      reset(input);
      assign(output,'mod.out');
      rewrite(output);
      readln(a,b);
      oujilide(a,b,d,x,y);
      while x<0 do
      x:=x+b;
      writeln(x);
      close(input);
      close(output);
      end.

  • 相关阅读:
    判断整数是否为质数?
    汇编debug
    DOS命令 Net config server Net config workstation
    DecimalField的使用
    BiNGO的GO分析
    GO富集分析 信号通路
    Cytoscape软件简介
    git pull遇到错误:error: Your local changes to the following files would be overwritten by merge:
    note3
    基因id
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/7093895.html
Copyright © 2011-2022 走看看