• SPOJ HG


    题目链接http://www.spoj.com/problems/HG/

    题目大意:分别给N个和M个小于等于1e9的数,前N个数相乘为A,后M个数相乘为B,问你GCD(A, B)  1<= N<= 1000,1 <=M <= 1000

    解题思路:枚举a[i] 和b[i],计算两者GCD,然后结果乘以GCD,两者都除以GCD。最后判断一下如何输出即可。

    代码:

     1 const int maxn = 1e4 + 5;
     2 int n, m;
     3 ll a[maxn], b[maxn];
     4 
     5 int gcd(int x, int y){
     6     return y == 0? x: gcd(y, x % y);
     7 }
     8 void solve(){
     9     ll ans = 1;
    10     bool flag = false;
    11     for(int i = 0; i < n; i++){
    12         for(int j = 0; j < m; j++){
    13             int tmp = gcd(a[i], b[j]);
    14             a[i] /= tmp; b[j] /= tmp;
    15             ans *= tmp; 
    16             if(ans >= mod){
    17                 flag = true;
    18                 ans %= mod;
    19             }
    20         }
    21     }
    22     if(flag) printf("%09lld
    ", ans % mod);
    23     else printf("%lld
    ", ans);
    24 }
    25 
    26 int main(){
    27     scanf("%d", &n);
    28     for(int i = 0; i < n; i++) scanf("%lld", &a[i]);
    29     scanf("%d", &m);
    30     for(int i = 0; i < m; i++) scanf("%lld", &b[i]);
    31     solve();
    32 }

    题目:

    HG - HUGE GCD

    RK has received a homework assignment to compute the greatest common divisor of the two positive integers Aand B. Since the numbers are quite large, the professor provided him with N smaller integers whose product is A, and M integers with product B.

    RK would like to verify his result, so he has asked you to write a program to solve his problem. If the result is more than 9 digits long, output only the last 9 digits.

    INPUT

    The first line of input contains the positive integer N (1<= N<= 1000).
    The second line of input contains N space-separated positive integers less than 10^9, whose product is the number A.
    The third line of input contains the positive integer M (1 <=M <= 1000).
    The fourth line of input contains M space-separated positive integers less than 10^9, whose product is the number B.

    OUTPUT

    The first and only line of output must contain the greatest common divisor of numbers A and B. If the result is more than 9 digits long, output only the last (least significant) 9 digits.

    SAMPLE

    Input
    3
    2 3 5
    2
    4 5
    Output
    10

    Input
    3
    358572 83391967 82
    3
    50229961 1091444 8863
    Output
    000012028

    First sample description: The greatest common divisor of numbers A = 30 and B = 20 equals 10.

  • 相关阅读:
    verilog中timescale
    [shell] if语句用法
    makefile编写
    linux下压缩解压缩命令
    python获取文件所在目录
    gvim 技巧
    vcs编译verilog/sysverilog并执行
    verilog中signed的使用
    [leetcode]_String to Integer (atoi)
    [leetcode]_Minimum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/bolderic/p/7409895.html
Copyright © 2020-2023  润新知