zoukankan      html  css  js  c++  java
  • P3868 [TJOI2009]猜数字(CRT板子)

    题目描述

    现有两组数字,每组k个,第一组中的数字分别为:a1,a2,...,ak表示,第二组中的数字分别用b1,b2,...,bk表示。其中第二组中的数字是两两互素的。求最小的非负整数n,满足对于任意的i,n - ai能被bi整除。

    输入输出格式

    输入格式:

     

    输入数据的第一行是一个整数k,(1 ≤ k ≤ 10)。接下来有两行,第一行是:a1,a2,...,ak,第二行是b1,b2,...,bk

     

    输出格式:

     

    输出所求的整数n。

     

    输入输出样例

    输入样例#1: 复制
    3
    1 2 3
    2 3 5
    
    输出样例#1: 复制
    23

    说明

    所有数据中,第一组数字的绝对值不超过109(可能为负数),第二组数字均为不超过6000的正整数,且第二组里所有数的乘积不超过1018

    每个测试点时限1秒

    注意:对于C/C++语言,对64位整型数应声明为long long,如使用scanf, printf函数(以及fscanf, fprintf等),应采用%lld标识符。





    像第一对a和b    , 首先其他a的最小公倍数才能满足其他的式子,求在这个最小公倍数的逆元在成a,有满足了自己成立,这里就用到了一个小技巧。

    这样满足了所有的式子成立,在%lcm扔成立

     1 #include"bits/stdc++.h"
     2 using namespace std;
     3 typedef long long ll;
     4 
     5 ll k,a[11],b[11],s=1,ans=0;
     6 
     7 
     8 void exgcd(ll a,ll b,ll &x, ll &y)
     9 {
    10     if (!b){
    11         x=1,y=0 ;return ;
    12     }
    13     
    14     exgcd(b,a%b,x,y); ll t;
    15     t=x;
    16     x=y;
    17     y=t-(a/b)*y;
    18 }
    19 
    20 inline ll mul(ll a,ll b)
    21 {
    22     ll r=0;
    23     while (b)
    24     {
    25         if (b&1)r+=a%=s;
    26         b>>=1;
    27         a+=a%=s;
    28     }return r;
    29 }
    30 int main()
    31 {
    32     cin>>k;
    33     for (int i=1;i<=k;i++)cin>>a[i];
    34     for (int i=1;i<=k;i++)cin>>b[i],s*=b[i];
    35     for(int i=1;i<=k;i++)
    36     {
    37         ll x,y;
    38         exgcd(s/b[i],b[i],x,y);
    39         x=(x%b[i]+b[i])%b[i];(1)
    40     //     cout<<i<<" "<<x<<endl;
    41         ans+=mul(s/b[i]*x,((a[i]%b[i]+b[i])%b[i]));//快速乘,否则爆long long(2)
    // 一和二式都取模意义下的最小正整数
    42 ans%=s; 43 } 44 cout<<ans; 45 }


  • 相关阅读:
    Kaffeine Player:固守丰富的媒体播放器
    GIMP 2.2.15
    基于终真个常用工具
    运用 GNOME Specimen 检查字体
    LINA:让 Linux 使用法度圭表标准在 Windows 和 Mac OS X 上运转
    Openbox 3.4 公布
    DB2 9 运用拓荒(733 查验)认证指南,第 1 局部: 数据库器材与编程步伐(1)
    Wammu-挪动电话治理器
    会计人员必去十大网站(最新)
    判断一个数组的长度用 Length 还是 SizeOf ?
  • 原文地址:https://www.cnblogs.com/zhangbuang/p/10338369.html
Copyright © 2011-2022 走看看