zoukankan      html  css  js  c++  java
  • ZZNUOJ-2154:单身狗线下聚会【求N个数的最小公倍数,会超longlong,大数乘法,Java】

    2154: 单身狗线下聚会

    题目描述
    
    马上就到七夕节了,单身狗们决定聚一聚。但是它们沉迷B站上的lo娘,他们每沉迷 ai 单身狗时间(这是它们专业计时)后就会休息 1 单身狗时间。它们想找到一个时间正好他们都在休息,然后聚在一起单身。但是,每一只单身都因为缺爱,所以非常讨厌52这个数字(它们非常喜欢12),所以它们最多沉迷51个单身狗时间。
    单身狗们发现每过一段相同的单身狗时间 S ,它们就一定会全部聚在一起。
    单身狗们想把这个作为加入单身狗聚会的考核,算不出来时间的单身狗就得加入它们。当然,作为一个要在遥远的未来找到对象的有理想单身狗,怎么能加入这个咸鱼的单身狗群呢!现在请算一算这个时间,让这群单身狗看看你的与众不同。
    
    输入
    
    输入一个整数T开始,表示测试用例的数量。
    每一行先输入一个整数n,(表示聚会中有 n 只单身狗)(1<=n<=10000),下一行将输入由空格分隔的n个整数ai(1<=ai<52)。
    
    输出
    
    一个最小的单身狗时间 S 。
    
    样例输入
    
    2
    2
    1 2
    4
    1 2 5 7 
    
    样例输出
    
    6
    24

    大致思路:

      求N个数的最大公倍数,C的话大数模拟乘法就好,但记得先把公因数除去一次!

      例如:2/4/8,2/6/8,2/8/10, 自行模拟求一下他们的最大公倍数,最后得出规律!!

      关于超longlong的判断,该题正好最大的ai<=50时,不超过unsigned longlong, 其余的情况下都是会超数据范围的!或者自己输入51个不同的数字试试!

      也可以hash一下处理,毕竟数字和数字重复后,仅算一个数字处理!

     1 import java.math.*;
     2 import java.util.*;
     3  
     4 public class Main {
     5      
     6     public static int Gcd(int a,int b){
     7         return b!=0?Gcd(b,a%b):a;
     8     }
     9     public static void main(String[] args) {
    10         // TODO Auto-generated method stub
    11         Scanner cin=new Scanner(System.in);
    12          
    13         int T=cin.nextInt();
    14          
    15         while(T-->0){
    16             int arr[]=new int[10008];
    17             int n=cin.nextInt();
    18             int x;
    19             for(int i=1;i<=n;i++){
    20                 x=cin.nextInt();
    21                 arr[i]=x+1;
    22             }
    23             for(int i=1;i<=n;i++){    //双重循环除掉一次因子
    24                 for(int j=i+1;j<=n;j++){
    25                     int num = Gcd(arr[i],arr[j]);
    26                     arr[j]/=num;
    27                 }
    28             }
    29              
    30             BigInteger sum=new BigInteger("1");
    31              
    32             for(int i=1;i<=n;i++){           
    33                     sum=sum.multiply(BigInteger.valueOf(arr[i]));
    34             }
    35             System.out.println(sum);
    36         }
    37          
    38     }
    39  
    40 }
    41  
    42 /**************************************************************
    43     Problem: 2154
    44     User: 137666
    45     Language: Java
    46     Result: 正确
    47     Time:180 ms
    48     Memory:20652 kb
    49 ****************************************************************/
  • 相关阅读:
    MRC和ARC混合开发
    创建静态库.a
    IOS 数据存储之 FMDB 详解
    AFNETWorking的使用
    日历demo
    iOS开发系列--通知与消息机制
    paypal支付说明
    支付宝路径的问题
    iOS开发多线程篇—GCD介绍
    回调的具体最弱智的解释
  • 原文地址:https://www.cnblogs.com/zhazhaacmer/p/9479525.html
Copyright © 2011-2022 走看看