zoukankan      html  css  js  c++  java
  • 【POJ】2891 Strange Way to Express Integers

    1. 题意描述
    已知数$X$模$n$个$m_i$的结果分别为$r_i$,求$X$的值。

    2. 基本思路
    因为$m_i$并不一定互质,所以此题不能直接用CRT解,不过解法基本是类似的。模板题,解一般模线型方程组。

    3. 代码

      1 /*  */
      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 typedef long long LL;
     45 const int maxn = 1e5+5;
     46 LL a[maxn], b[maxn];
     47 int n;
     48 bool flag;
     49 
     50 void egcd(LL a, LL b, LL& d, LL& x, LL& y) {
     51     if (!b) {
     52         d = a;
     53         x = 1;
     54         y = 0;
     55     } else {
     56         egcd(b, a%b, d, y, x);
     57         y -= a/b*x;
     58     }
     59 }
     60 
     61 LL china(int n, LL *r, LL *m) {
     62     LL M = m[0], R = r[0], x, y, d;
     63 
     64     rep(i, 1, n) {
     65         egcd(M, m[i], d, x, y);
     66         if ((r[i] - R) % d)    return -1;
     67         x = (r[i] - R) / d * x % (m[i] / d);
     68         R += x * M;
     69         M = M / d * m[i];
     70         R %= M;
     71     }
     72     
     73     return (R + M) % M;
     74 }
     75 
     76 void solve() {
     77     LL ans = china(n, b, a);
     78     printf("%I64d
    ", ans);
     79 }
     80 
     81 int main() {
     82     cin.tie(0);
     83     ios::sync_with_stdio(false);
     84     #ifndef ONLINE_JUDGE
     85         freopen("data.in", "r", stdin);
     86         freopen("data.out", "w", stdout);
     87     #endif
     88     
     89     while (scanf("%d", &n)!=EOF) {
     90         rep(i, 0, n)
     91             scanf("%I64d%I64d", &a[i],&b[i]);
     92         solve();
     93     }
     94     
     95     #ifndef ONLINE_JUDGE
     96         printf("time = %ldms.
    ", clock());
     97     #endif
     98     
     99     return 0;
    100 }
  • 相关阅读:
    JSON基础知识
    Java 环境配置
    接口测试基础知识
    Fiddler初学笔记
    es6数组方法findIndex()
    sass+less相关
    前端库/框架/插件相关
    知名博主相关
    CSS相关
    移动Web相关
  • 原文地址:https://www.cnblogs.com/bombe1013/p/5595244.html
Copyright © 2011-2022 走看看