hdoj-3579-Hello Kiki【中国剩余定理 & 除数不互质】

Hello Kiki

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 2590 Accepted Submission(s): 945

Problem Description

One day I was shopping in the supermarket. There was a cashier counting coins seriously when a little kid running and singing "门前大桥下游过一群鸭,快来快来 数一数,二四六七八". And then the cashier put the counted coins back morosely and count again...

Hello Kiki is such a lovely girl that she loves doing counting in a different way. For example, when she is counting X coins, she count them N times. Each time she divide the coins into several same sized groups and write down the group size Mi and the number
of the remaining coins Ai on her note.

One day Kiki‘s father found her note and he wanted to know how much coins Kiki was counting.

Input

The first line is T indicating the number of test cases.

Each case contains N on the first line, Mi(1 <= i <= N) on the second line, and corresponding Ai(1 <= i <= N) on the third line.

All numbers in the input and output are integers.

1 <= T <= 100, 1 <= N <= 6, 1 <= Mi <= 50, 0 <= Ai < Mi

Output

For each case output the least positive integer X which Kiki was counting in the sample output format. If there is no solution then output -1.

Sample Input

2
2
14 57
5 56
5
19 54 40 24 80
11 2 36 20 76

Sample Output

Case 1: 341
Case 2: 5996

Author

digiter (Special Thanks echo)

Source

2010 ACM-ICPC Multi-University Training
Contest(14)——Host by BJTU

Recommend

zhouzeyong | We have carefully selected several similar problems for you:
3573 3574 3575 3576 3577

#include<stdio.h>
int M[10],A[10];
int n;
void EXGCD(int a,int b,int &x,int &y,int &c){
	if(b==0){
		x=1;
		y=0;
		c=a;
		return;
	}
	EXGCD(b,a%b,x,y,c);
	int temp=x;
	x=y;
	y=temp-a/b*y;
}
int China_2(int M[],int B[]){
	int a1=M[0],b1=B[0];
	int ok=0,d,x,y,c,i;
	for(i=1;i<n;++i){
		if(ok) continue;
		EXGCD(a1,M[i],x,y,c);
		d=B[i]-b1;
		if(d%c){
			ok=1;
			continue;
		}
		int q=M[i]/c;
		x=(x*d/c%q+q)%q;
		b1=a1*x+b1;
		a1=a1*M[i]/c;  // a1 与 M[i] 的最小公倍数
	}
	if(ok) return -1;
	else return b1?b1:b1+a1;
}
int main(){
	int t,ncas=0;
	scanf("%d",&t);
	while(t--){
		ncas++;
		int i;
		scanf("%d",&n);
		for(i=0;i<n;++i){
			scanf("%d",&M[i]);
		}
		for(i=0;i<n;++i){
			scanf("%d",&A[i]);
		}
	    printf("Case %d: %d\n",ncas,China_2(M,A));
	}
	return 0;
}

此题陷阱:不能输出0

如测试数据: 对于 2

3  4

0  0

----->>应该输出12

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

时间: 2025-01-10 21:41:25

hdoj-3579-Hello Kiki【中国剩余定理 & 除数不互质】的相关文章

hdoj-1573-X问题【中国剩余定理 &amp; 除数不互质】

X问题 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4255 Accepted Submission(s): 1359 Problem Description 求在小于等于N的正整数中有多少个X满足:X mod a[0] = b[0], X mod a[1] = b[1], X mod a[2] = b[2], -, X mod a[i]

HDU 3579 Hello Kiki 中国剩余定理(合并方程

题意: 给定方程 res % 14 = 5 res % 57 = 56 求res 中国剩余定理裸题 #include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> #include<math.h> #include<set> #include<queue> #include<vector> using namespace s

hdu 3579 Hello Kiki (中国剩余定理)

Hello Kiki Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1943    Accepted Submission(s): 693 Problem Description One day I was shopping in the supermarket. There was a cashier counting coins s

POJ 2891 中国剩余定理的非互质形式

中国剩余定理的非互质形式 任意n个表达式一对对处理,故只需处理两个表达式. x = a(mod m) x = b(mod n) km+a = b (mod n) km = (a-b)(mod n) 利用扩展欧几里得算法求出k k = k0(mod n/(n,m)) = k0 + h*n/(n,m) x = km+a = k0*m+a+h*n*m/(n,m) = k0*m+a (mod n*m/(n,m)) #include <cstdio> #include <cstring> #

BestCoder Round #80 1004 hdu 5668 中国剩余定理(m不互质版)

链接:戳这里 Circle Time Limit: 2000/1000 MS (Java/Others)   Memory Limit: 65536/65536 K (Java/Others) 问题描述 \ \ \ \     Fye对约瑟夫游戏十分着迷. \ \ \ \     她找到了n个同学,把他们围成一个圈,让他们做约瑟夫游戏,然后她得到了一个同学们出圈的编号序列.游戏是这样进行的:以同学1为起点,开始计数,计数到第k个同学,该同学出圈.出圈的同学将不参与之后的计数. \ \ \ \  

Hello Kiki(中国剩余定理——不互质的情况)

Hello Kiki Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 247 Accepted Submission(s): 107   Problem Description One day I was shopping in the supermarket. There was a cashier counting coins serio

X问题(中国剩余定理应用)

G - X问题 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 1573 Appoint description:  System Crawler  (2015-05-02) Description 求在小于等于N的正整数中有多少个X满足:X mod a[0] = b[0], X mod a[1] = b[1], X mod a[2] =

X问题(中国剩余定理+不互质版应用)hdu1573

X问题 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3921    Accepted Submission(s): 1253 Problem Description 求在小于等于N的正整数中有多少个X满足:X mod a[0] = b[0], X mod a[1] = b[1], X mod a[2] = b[2], …, X mod

中国剩余定理 hdu 3579

HDU 3579 Hello Kiki Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3107    Accepted Submission(s): 1157 Problem Description One day I was shopping in the supermarket. There was a cashier counti