Document directory
- Problem description
- Input
- Output
- Sample Input
- Sample output
Continued time limit for digital games: 12000/4000 ms (Java/other) memory limit: 65535/32768 K (Java/other) total submission (s): 152 accepted submission (s): 50 Font: times New Roman | verdana | georgiafont size, he wants to calculate the maximum common divisor of two numbers A and B.
Because these two numbers are very large, the Mavericks split the number a into N numbers. The result of multiplying the N numbers is a, and B is split into M numbers, similarly, the product of the number of M is equal to the value of B. Tom can't wait to calculate the maximum common number of the two numbers. Can you help him this time? If the result exceeds 9 digits, the last 9 digits are output. The input has multiple groups of data.
The first line contains a positive integer N (1 <=n <= 1000 ).
The second line contains n positive integers less than 1 000 000 000 separated by spaces. Their product is.
The third row contains a positive integer m (1 <= m <= 1000 ).
The fourth row contains M positive integers less than 1 000 000 000 separated by spaces. Their product is B. Output outputs the maximum common divisor of A and B. If the result exceeds 9 digits, the last 9 digits are output. Sample Input
32 3 524 546 2 3 4113358572 83391967 82350229961 1091444 8863
Sample output
101000012028
View code
#include<stdio.h>#include<string.h>#include<stdlib.h>unsigned long long gcd( long long n, long long m ){ return m ? gcd(m,n%m): n; }unsigned long long a[1010],s1;unsigned long long d[1010],s2;int main( ){ int N, M; unsigned long long dd[1010]; while( scanf("%d",&N) != EOF) { s1 = 1; for( int i = 1; i <= N; i++) { scanf("%lld",&a[i]); } s2 = 1; scanf("%d",&M); for( int i = 1; i <= M; i++) { scanf("%lld",&d[i]); } int flag = 0; for( int i = 1; i <= N; i++) { for( int j = 1; j <= M; j++) { s2 = gcd(a[i],d[j]); s1 *= s2; if( s1 >= 1000000000 ) s1 %= 1000000000, flag = 1; a[i] /= s2; d[j] /= s2; } } if( flag ) { printf("%09I64u\n",s1%1000000000); } else printf("%I64u\n",s1); } }