• 【ZOJ】3609 Modular Inverse


    1. 题目描述
    求乘法逆元。

    2. 基本思路
    利用扩展gcd求逆元,模板题目。

    3. 代码

     1 /* 3609 */
     2 #include <iostream>
     3 #include <sstream>
     4 #include <string>
     5 #include <map>
     6 #include <queue>
     7 #include <set>
     8 #include <stack>
     9 #include <vector>
    10 #include <deque>
    11 #include <bitset>
    12 #include <algorithm>
    13 #include <cstdio>
    14 #include <cmath>
    15 #include <ctime>
    16 #include <cstring>
    17 #include <climits>
    18 #include <cctype>
    19 #include <cassert>
    20 #include <functional>
    21 #include <iterator>
    22 #include <iomanip>
    23 using namespace std;
    24 //#pragma comment(linker,"/STACK:102400000,1024000")
    25 
    26 #define sti                set<int>
    27 #define stpii            set<pair<int, int> >
    28 #define mpii            map<int,int>
    29 #define vi                vector<int>
    30 #define pii                pair<int,int>
    31 #define vpii            vector<pair<int,int> >
    32 #define rep(i, a, n)     for (int i=a;i<n;++i)
    33 #define per(i, a, n)     for (int i=n-1;i>=a;--i)
    34 #define clr                clear
    35 #define pb                 push_back
    36 #define mp                 make_pair
    37 #define fir                first
    38 #define sec                second
    39 #define all(x)             (x).begin(),(x).end()
    40 #define SZ(x)             ((int)(x).size())
    41 #define lson            l, mid, rt<<1
    42 #define rson            mid+1, r, rt<<1|1
    43 
    44 #define LL long long
    45 
    46 void egcd(LL a, LL b, LL& g, LL& x, LL& y) {
    47     if (!b) {
    48         g = a;
    49         x = 1;
    50         y = 0;
    51     } else {
    52         egcd(b, a%b, g, y, x);
    53         y -= a/b*x;
    54     }
    55 }
    56 
    57 int inv(LL a, LL n) {
    58     LL g, x, y;
    59     
    60     egcd(a, n, g, x, y);
    61     if (g != 1)
    62         return -1;
    63     
    64     return x%n==0 ? n:(x%n+n)%n;
    65 }
    66 
    67 int main() {
    68     ios::sync_with_stdio(false);
    69     #ifndef ONLINE_JUDGE
    70         freopen("data.in", "r", stdin);
    71         freopen("data.out", "w", stdout);
    72     #endif
    73     
    74     int t;
    75     LL a, m;
    76     LL ans;
    77     
    78     scanf("%d", &t);
    79     while (t--) {
    80         scanf("%lld%lld", &a, &m);
    81         ans = inv(a, m);
    82         if (ans == -1) {
    83             puts ("Not Exist");
    84         } else {
    85             printf("%lld
    ", ans);
    86         }
    87     }
    88     
    89     #ifndef ONLINE_JUDGE
    90         printf("time = %d.
    ", (int)clock());
    91     #endif
    92     
    93     return 0;
    94 }

    4. 代码生成器

     1 import sys
     2 import string
     3 from random import randint
     4 
     5     
     6 def GenData(fileName):
     7     with open(fileName, "w") as fout:
     8         t = 1000
     9         fout.write("%d
    " % (t))
    10         for tt in xrange(t):
    11             n = randint(1, 1000)
    12             m = randint(1, 1000)
    13             fout.write("%d %d
    " % (n, m))
    14                 
    15         
    16 def MovData(srcFileName, desFileName):
    17     with open(srcFileName, "r") as fin:
    18         lines = fin.readlines()
    19     with open(desFileName, "w") as fout:
    20         fout.write("".join(lines))
    21 
    22         
    23 def CompData():
    24     print "comp"
    25     srcFileName = "F:Qt_prjhdojdata.out"
    26     desFileName = "F:workspacecpp_hdojdata.out"
    27     srcLines = []
    28     desLines = []
    29     with open(srcFileName, "r") as fin:
    30         srcLines = fin.readlines()
    31     with open(desFileName, "r") as fin:
    32         desLines = fin.readlines()
    33     n = min(len(srcLines), len(desLines))-1
    34     for i in xrange(n):
    35         ans2 = int(desLines[i])
    36         ans1 = int(srcLines[i])
    37         if ans1 > ans2:
    38             print "%d: wrong" % i
    39 
    40             
    41 if __name__ == "__main__":
    42     srcFileName = "F:Qt_prjhdojdata.in"
    43     desFileName = "F:workspacecpp_hdojdata.in"
    44     GenData(srcFileName)
    45     MovData(srcFileName, desFileName)
    46     
    47     
  • 相关阅读:
    Access restriction: The constructor SunJCE() is not accessible due to restriction on required librar
    我选择,我奋斗
    C/C++语言写程序时的“段错误”总结
    VC中临时窗口与持久窗口的对比
    一个WinSocket编程实例
    error PRJ0003 : 生成“cmd.exe”时出错
    编辑利器VIM
    LED数码管的学习
    这个世界诱惑太多
    计算机英语名词简释
  • 原文地址:https://www.cnblogs.com/bombe1013/p/5227080.html
Copyright © 2020-2023  润新知