zoukankan      html  css  js  c++  java
  • hdu 1573 x问题(中国剩余定理)HDU 2007-1 Programming Contest

    只是套模板而已(模板其实也不懂)。

    留着以后好好学的时候再改吧。

    题意——

    X = a[i] MOD b[i];

    已知a[i],b[i],求在[1, n]中存在多少x满足条件。

    输入——

    第一行一个整数t,表示一共t组数据。

    第二行两个整数n,m,表示在n以内寻找满足的数,一共m组方程组。

    输出——

    一个整数。如果存在满足的x,则输出x的数量。否则输出0。

    直接给代码吧——

     1 #include <cstdio>
     2 #include <iostream>
     3 #include <cmath>
     4 #include <cstring>
     5 #include <algorithm>
     6 #define LL long long
     7 using namespace std;
     8 
     9 const int N = 15;
    10 
    11 int a[N], b[N];
    12 int m;
    13 int n, m1, r1, x, y, d;
    14 int m2, r2, c, t, mod;
    15 bool flag;
    16 
    17 void exgcd(int a, int b, int &x, int &y, int &d)
    18 {
    19     if(!b)
    20     {
    21         d = a;
    22         x = 1;
    23         y = 0;
    24     }
    25     else
    26     {
    27         exgcd(b, a%b, y, x, d);
    28         y -= x*(a/b);
    29     }
    30 }
    31 
    32 void crt()
    33 {
    34     m1 = a[0], r1 = b[0];
    35     flag = 0;
    36     for(int i = 1; i < m; i++)
    37     {
    38         m2 = a[i];
    39         r2 = b[i];
    40         if(flag) continue;
    41         exgcd(m1, m2, x, y, d);
    42         c = r2-r1;
    43         if(c%d)
    44         {
    45             flag = 1;
    46             continue;
    47         }
    48         mod = m2/d;
    49         x = (c/d*x%mod+mod)%mod;
    50         r1 = m1*x+r1;
    51         m1 = m1*m2/d;
    52     }
    53     if(flag || n < r1) printf("0
    ");
    54     else
    55     {
    56         int ans = (n-r1)/m1+1;
    57         if(r1 == 0) ans--;
    58         printf("%d
    ", ans);
    59     }
    60 }
    61 
    62 int main()
    63 {
    64     //freopen("test.txt", "r", stdin);
    65     scanf("%d", &t);
    66     while(t--)
    67     {
    68         scanf("%d%d", &n, &m);
    69         for(int i = 0; i < m; i++) scanf("%d", &a[i]);
    70         for(int i = 0; i < m; i++) scanf("%d", &b[i]);
    71         crt();
    72     }
    73     return 0;
    74 }
    View Code
  • 相关阅读:
    再见了,正则表达式
    深入理解 Python 描述符
    并发-ScheduledThreadPoolExecutor
    ScheduledExecutorService用法
    常见限流算法总结
    常见集合类的复杂度
    并发-ConcurrentHashMap 1.7和1.8的区别
    并发-HashMap在jdk1.8也会出现死循环
    并发-Hashmap 1.7和1.8有哪些区别
    并发-HashMap与红黑树-todo
  • 原文地址:https://www.cnblogs.com/mypride/p/4676252.html
Copyright © 2011-2022 走看看