• HDU1573 X问题


    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作。

    本文作者:ljh2000
    作者博客:http://www.cnblogs.com/ljh2000-jump/
    转载请注明出处,侵权必究,保留最终解释权!

    题目链接:HDU1573

    正解:中国剩余定理

    解题报告:

      裸题练手…

      注意统计的时候,边界问题。

    //It is made by ljh2000
    //有志者,事竟成,破釜沉舟,百二秦关终属楚;苦心人,天不负,卧薪尝胆,三千越甲可吞吴。
    #include <iostream>
    #include <cstdlib>
    #include <cstring>
    #include <cstdio>
    #include <cmath>
    #include <algorithm>
    #include <ctime>
    #include <vector>
    #include <queue>
    #include <map>
    #include <set>
    #include <string>
    #include <complex>
    #include <bitset>
    using namespace std;
    typedef long long LL;
    typedef long double LB;
    typedef complex<double> C;
    const double pi = acos(-1);
    const int MAXN = 12;
    int n,k,m[MAXN],r[MAXN],ans;
    
    inline int getint(){
        int w=0,q=0; char c=getchar(); while((c<'0'||c>'9') && c!='-') c=getchar();
        if(c=='-') q=1,c=getchar(); while (c>='0'&&c<='9') w=w*10+c-'0',c=getchar(); return q?-w:w;
    }
    
    inline void exgcd(int a,int b,int &d,int &x,int &y){
    	if(b==0) { d=a; x=1; y=0; return ; }
    	exgcd(b,a%b,d,y,x);
    	y-=a/b*x;
    }
    
    inline void work(){
    	int T=getint();
    	while(T--) {
    		n=getint(); k=getint();
    		for(int i=1;i<=k;i++) m[i]=getint();
    		for(int i=1;i<=k;i++) r[i]=getint();
    		int M=m[1],R=r[1],d,x,y,z,b;
    		bool ok=false;
    		for(int i=2;i<=k;i++) {
    			exgcd(M,m[i],d,x,y);
    			z=r[i]-R; if(z%d!=0) { ok=true; break; }
    			b=m[i]; b/=d; z/=d;
    			x=x*z%b; x+=b; x%=b;
    			R+=x*M;
    			M=M*m[i]/d;
    		}
    		if(ok || n<R) { puts("0"); continue; }
    		ans=(n-R)/M; ans++;
    		if(R==0) ans--;//!!!
    		printf("%d
    ",ans);
    	}
    }
    
    int main()
    {
        work();
        return 0;
    }
    //有志者,事竟成,破釜沉舟,百二秦关终属楚;苦心人,天不负,卧薪尝胆,三千越甲可吞吴。
    

      

  • 相关阅读:
    POJ 3308 Paratroopers
    POJ 3228 Gold Transportation
    POJ 4786 Fibonacci Tree
    POJ 2987 Firing
    Models——英语学习小技巧之四
    Linux编程环境介绍(3) -- linux下的c/c++程序开发
    怎样使用Markdown
    windows系统中的dll的作用详细解释
    解决ListView 和ScroolView 共存 listItem.measure(0, 0) 空指针
    网页添加背景音乐
  • 原文地址:https://www.cnblogs.com/ljh2000-jump/p/6553511.html
Copyright © 2020-2023  润新知