• HDU 1573


    特判r1=0时的情况,因为0是不能模的。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    
    const int MaxM=11;
    
    int a[MaxM],b[MaxM];
    
    void exgcd(int a,int b,int &d,int &x,int &y){
    	if(b==0){
    		x=1; y=0;
    		d=a;
    	}
    	else{
    		exgcd(b,a%b,d,x,y);
    		int tmp=x;
    		x=y;
    		y=tmp-(a/b)*y;
    	}
    }
    
    int gcd(int a,int b){
    	if(b==0) return a;
    	return gcd(b,a%b);
    }
    
    int main(){
    	int t; int a1,r1,a2,r2; int aa,bb,cc,dd; int x,y; int g;
    	scanf("%d",&t);
    	int n,m;
    	bool ifhave;
    	while(t--){
    		scanf("%d%d",&n,&m);
    		g=1;
    		for(int i=0;i<m;i++){
    			scanf("%d",&a[i]);
    			if(i==0){ g=a[i]; continue; }
    			g=g*a[i]/gcd(g,a[i]);
    		}
    		for(int i=0;i<m;i++)
    		scanf("%d",&b[i]);
    		a1=a[0]; r1=b[0];
    		ifhave=true;
    		for(int i=1;i<m;i++){
    			a2=a[i]; r2=b[i];
    			aa=a1; bb=a2; cc=r2-r1;
    			exgcd(aa,bb,dd,x,y);
    			if(cc%dd!=0){
    				ifhave=false;
    				break;
    			}
    			int t=bb/dd;
    			x=(x*(cc/dd)%t+t)%t;
    			r1=a1*x+r1;
    			a1=a1*(a2/dd);
    		}
    		if(!ifhave)
    		printf("0
    ");
    		else{
    			int tmp=r1;
    			int i;
    			for(i=1;;i++){
    				if(tmp+(i-1)*g>n) break;
    			}
    			if(tmp==0) i--;
    			printf("%d
    ",i-1);
    		}
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    JDK的几种分析工具
    心理价值
    通过Proxool辅助数据库优化
    人生缄言
    grep 用法
    多服务器快速定位
    RandomAccessFile读取远程系统日志
    20101116 视频处理几个常用指令
    Flickr架构
    JAVA正则表达式语法
  • 原文地址:https://www.cnblogs.com/jie-dcai/p/3945723.html
Copyright © 2020-2023  润新知