zoukankan      html  css  js  c++  java
  • D. Almost All Divisors(思维)

     题目链接:https://codeforces.com/problemset/problem/1165/D

    题目大意:

    T组测试样例,然后n个数,问你能否求出一个数,他的因子个数是n+2个,除了1和本身,剩下的n个数就是输入的这n个数。如果有输出这个数的最小值,否则输出-1.

    具体思路:

    假设这个数是存在的,那么这个数的最大因子就是这n个数里面最大的,又因为这n个数里面肯定没有这个数本身,所以这个数存在的话,一定为最小的因子和最大的因子之积。

    然后我们检验这个数的n个因子是不是合法的,然后判断一下因子的个数除了本身和1是否为n个就可以了。

    AC代码:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 # define ll unsigned  long long
     4 # define inf 0x3f3f3f3f
     5 const int maxn = 2e5+100;
     6 const ll mod = 998244353 ;
     7 ll a[maxn];
     8 int main()
     9 {
    10     int T;
    11     scanf("%d",&T);
    12     while(T--)
    13     {
    14         int n;
    15         scanf("%d",&n);
    16         for(int i=1; i<=n; i++)
    17         {
    18             scanf("%lld",&a[i]);
    19         }
    20         sort(a+1,a+n+1);
    21         ll ans=a[1]*a[n];
    22         int flag=1;
    23         for(int i=1; i<=n; i++)
    24         {
    25             if(ans%a[i]!=0)
    26                 flag=0;
    27         }
    28         if(!flag)
    29         {
    30             printf("-1
    ");
    31         }
    32         else
    33         {
    34             ll tmp=(int)sqrt(ans);
    35             int cnt=0;
    36             for(ll i=2; i<=tmp; i++)
    37             {
    38                 if(ans%i==0)
    39                 {
    40                     cnt++;
    41                     if(ans/i!=i)cnt++;// 如果是9=3*3这类的,应该算一个
    42                 }
    43             }
    44         //    cout<<cnt<<endl;
    45             if(cnt==n)
    46                 printf("%lld
    ",ans);
    47                 else printf("-1
    ");
    48         }
    49     }
    50     return 0;
    51 }
  • 相关阅读:
    fishredux 大体流程
    flutter Container组件和Text组件
    vue 页面跳转以及传参
    mySql 查询当天、本周、最近7天、本月、最近30天的语句
    Flutter编译时下载依赖报错的解决方案
    计算属性和方法
    计算属性传参
    原生js发送请求
    MySQL数据库连接
    flask 蓝图
  • 原文地址:https://www.cnblogs.com/letlifestop/p/10908828.html
Copyright © 2011-2022 走看看