数论题,本想用中国剩余定理,可是取模的数之间不一定互质,用不了,看到网上有篇文章写得很好的:数论——中国剩余定理(互质与非互质),主要是采用合并方程的思想:

  大致理解并参考他的代码后便去试试hdu上这道题,可还是wa了数遍。

 #include<cstdio>
#define scd(x) scanf("%d",&x)
#define sclld(x) scanf("%I64d",&x)
#define prd(x) printf("%d\n",x)
#define For(i,s,t) for(int i=s; i<t; ++i)
typedef long long LL; LL gcd(LL a, LL b) { return b==? a: gcd(b,a%b); }
LL lcm(LL x, LL y) { return x/gcd(x,y)*y; } void gcd(LL a, LL b, LL &d, LL &x, LL &y){
if(!b) { d=a; x=; y=; }
else { gcd(b,a%b,d,y,x); y-= x*(a/b); }
} LL inv(LL a, LL n){
LL d,x,y;
gcd(a,n,d,x,y);
return d==? (x+n)%n:-;
} bool merge(LL a1, LL n1, LL a2, LL n2, LL &aa, LL &nn){
LL d= gcd(n1,n2), c= a2-a1;
if(c%d) return ;
c= (c%n2+n2)%n2;
c/= d;
n2/= d;
c= c*inv(n1/d,n2)%n2;
c= c*n1+a1;
nn= n1*n2;
aa= (c%nn+nn)%nn;
return true;
} LL ext_china(LL len, LL a[], LL n[]){
LL a1= a[], n1= n[];
for(LL i=; i<len; ++i){
LL aa, nn;
if(!merge(a1,n1,a[i],n[i],aa,nn)) return -;
a1= aa;
n1= nn;
}
return (a1%n1+n1)%n1;
} LL a[], b[]; int main(){
int t;
LL n,m,M;
scd(t);
while(t--){
sclld(n); sclld(m);
M= ;
For(i,,m){
sclld(a[i]);
M= lcm(M,a[i]);
}
For(i,,m) sclld(b[i]);
LL tmp= ext_china(m,b,a);
if(tmp== -){
puts("");
continue;
}
int ans= ;
while(tmp<=n){
if(tmp) ++ans;
tmp+= M;
}
prd(ans);
}
return ;
}

  不想用cin,cout便用宏替换来代替输入输出了,有几个wa点:1.ext_china中有可能返回-1,要分开处理;2. tmp值一开始可能是0,不能算入最后结果中;3. M的值不能是a数组的简单相乘,应是它们的最小公倍数才对。

hdu 1573 X问题的更多相关文章

  1. HDU 1573 CRT

    CRT模板题 /** @Date : 2017-09-15 13:52:21 * @FileName: HDU 1573 CRT EXGCD.cpp * @Platform: Windows * @A ...

  2. 中国剩余定理 hdu 1573 X问题

    HDU 1573 X问题 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  3. HDU 1573 X问题 中国剩余定理

    链接:pid=1573">http://acm.hdu.edu.cn/showproblem.php? pid=1573 题意:求在小于等于N的正整数中有多少个X满足:X mod a[ ...

  4. hdu 1573 X问题 (非互质的中国剩余定理)

    X问题 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  5. hdu 1573 A/B (扩展欧几里得)

    Problem Description 要求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)(我们给定的A必能被B整除,且gcd(B,9973)= 1). Input 数据的第一行 ...

  6. X问题 HDU - 1573(excrt入门题)

    X问题 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  7. 一些关于中国剩余定理的数论题(POJ 2891/HDU 3579/HDU 1573/HDU 1930)

    2891 -- Strange Way to Express Integers import java.math.BigInteger; import java.util.Scanner; publi ...

  8. hdu 1573 X问题 不互质的中国剩余定理

    X问题 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  9. HDU 1573 X问题 (中国剩余定理)

    题目链接 题意 : 中文题不详述. 思路 : 中国剩余定理.求中国剩余定理中解的个数.看这里看这里 #include <stdio.h> #include <iostream> ...

随机推荐

  1. 周赛-Colored Sticks 分类: 比赛 2015-08-02 09:33 7人阅读 评论(0) 收藏

    Colored Sticks Time Limit: 5000MS Memory Limit: 128000K Total Submissions: 32423 Accepted: 8556 Desc ...

  2. A Mathematical Curiosity 分类: HDU 2015-06-25 21:27 11人阅读 评论(0) 收藏

    A Mathematical Curiosity Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Ot ...

  3. Gold Coins 分类: POJ 2015-06-10 15:04 16人阅读 评论(0) 收藏

    Gold Coins Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 21767   Accepted: 13641 Desc ...

  4. 实现gabor filter的滤波

    实现gabor filter的滤波       图像纹理对于航空遥感图片.织物图案.复杂自然风景和动植物都适合.这里我采用遥感图片.织物图案和钢铁表面来做,并和canny图片进行一定的对比.     ...

  5. Uva 1599 最佳路径

    题目链接:https://uva.onlinejudge.org/external/15/1599.pdf 题意: 保证在最短路的时候,输出字典序最小的路径. 方法: 路径上有了权值,可以利用图论的数 ...

  6. 怎样实现UIView的旋转

    首先创建界面,在viewDidLoad创建view以及button 相关代码如下 -(void)viewDidLoad { [super viewDidLoad]; viewDemo = [[UIVi ...

  7. SQL高级查询——50句查询(含答案)

    -一个题目涉及到的50个Sql语句 --(下面表的结构以给出,自己在数据库中建立表.并且添加相应的数据,数据要全面些. 其中Student表中,SId为学生的ID) ----------------- ...

  8. 使用JavaScript输出

    使用JavaScript输出 1.如果需要JavaScript访问html元素,我们可以通过为html元素添加id属性,然后通过JavaScript的document.getElementById(i ...

  9. Python3基础 type获取变量的类型

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  10. 如何在Ubuntu/CentOS上安装Linux内核4.0

    大家好,今天我们学习一下如何从Elrepo或者源代码来安装最新的Linux内核4.0.代号为‘Hurr durr I'm a sheep’的Linux内核4.0是目前为止最新的主干内核.它是稳定版3. ...