码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 1573 同余定理

时间:2015-07-18 18:37:44      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:剩余定理

#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
long long n,m;
long long int a[100];
long long int b[100];

int gcd(int a,int b){
	return b == 0? a: gcd(b,a%b);
}
int main(){
	int t;
	scanf("%d",&t);
	
	while(t--){
		scanf("%I64d%I64d",&n,&m);
		
		int ma = 1;
		
		for(int i = 0;i < m;i++){
			scanf("%d",&a[i]);
			ma = a[i]/gcd(ma,a[i])*ma;	
		}	
		for(int i = 0;i < m;i++){
			scanf("%d",&b[i]);
		}
		int x,c = 0;
		for(x = a[0]*c+b[0];x < ma && x <= n;c++,x += a[0]){
			int flag = 1;
			for(int i = 1 ;i < m;i++){
				if(x%a[i] != b[i]){
					flag = 0;	
				}
			}
			if(flag){
				break;
			}
		}
		if(x>= ma || x > n){
			cout << "0" << endl;
		}
		else{
			int ans = (n-x)/ma;
			if(x % ma){
				ans ++;
			}
			cout << ans << endl;		
		}
	}
	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

hdu 1573 同余定理

标签:剩余定理

原文地址:http://blog.csdn.net/qq_24667639/article/details/46944027

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!