• Codeforces Round #579 (Div. 3) B Equal Rectangles、C. Common Divisors


    B Equal Rectangles

    题意:

    给你4*n个数,让你判断能不能用这个4*n个数为边凑成n个矩形,使的每个矩形面积相等

    题解:

    原本是想着用二分来找出来那个最终的面积,但是仔细想一想,那个面积只能是给出的4*n个数中的最小值和最大值的乘积,如果这两个长度不凑成一个矩形,那么肯定全部矩形的面积会出现不一致的

    代码:

     1 //The idea was to use dichotomies to find that area, and then use that area to figure it out, but it's more complicated than that
     2 //If you don't use the smallest and largest as the two sides of a rectangle, there will always be an area larger than that
     3 #include <stdio.h>
     4 #include <algorithm>
     5 #include <iostream>
     6 #include <string.h>
     7 using namespace std;
     8 const int maxn = 405;
     9 typedef long long ll;
    10 int v[maxn],w[maxn];
    11 int main()
    12 {
    13     int t;
    14     scanf("%d",&t);
    15     while(t--)
    16     {
    17         int n;
    18         scanf("%d",&n);
    19         for(int i=1;i<=4*n;++i)
    20         {
    21             scanf("%d",&v[i]);
    22         }
    23         sort(v+1,v+1+4*n);
    24         int x=v[1]*v[4*n],flag=1;
    25         for(int i=2;i<=2*n;++i)
    26         {
    27             if(v[i]*v[4*n-i+1]!=x)
    28             {
    29                 flag=0;
    30                 break;
    31             }
    32         }
    33         for(int i=2;i<=4*n;i+=2)
    34         {
    35             if(v[i]!=v[i-1])
    36             {
    37                 flag=0;
    38                 break;
    39             }
    40         }
    41         if(flag) printf("YES
    ");
    42         else printf("NO
    ");
    43     }
    44     return 0;
    45 }
    View Code

    C. Common Divisors

    题意:

    给你n个数,让你找出来这n个数的公因数有多少个

    题解:

    肯定不能暴力for循环找,一个数的公因数的因数也是这个数的因数,那么我们就可以找出来这n个数的最大公共因数,然后再在这个因数里面找因数

    代码:

     1 #include <bits/stdc++.h>
     2 
     3 #define ll long long
     4 
     5 #define sc scanf
     6 
     7 #define pr printf
     8 
     9 using namespace std;
    10 
    11 ll gcd(ll a, ll b)
    12 
    13 {
    14 
    15     return b == 0 ? a : gcd(b, a % b);
    16 
    17 }
    18 
    19 int main()
    20 
    21 {
    22 
    23     int n;
    24 
    25     scanf("%d", &n);
    26 
    27     ll t1, t2;
    28 
    29     sc("%lld", &t1);
    30 
    31     for (int i = 1; i < n; i++)
    32 
    33     {
    34 
    35         sc("%lld", &t2);
    36 
    37         t1 = gcd(t1, t2);
    38 
    39     }
    40 
    41     ll qq = sqrt(t1);
    42 
    43     ll ans = 0;
    44 
    45     for (ll i = 1; i <= qq; i++)
    46 
    47     {
    48 
    49         if (t1 % i == 0)
    50 
    51         {
    52 
    53             ans++;
    54 
    55             if (t1 / i != i)
    56 
    57                 ans++;
    58 
    59         }
    60 
    61     }
    62 
    63     printf("%lld", ans);
    64 
    65 }
    View Code
  • 相关阅读:
    第五章 并发性:互斥和同步
    第四章 线程、SMP和微内核
    Python Linked List
    关于名字查找
    测试当前C环境的栈帧增长方向以及传递参数时的压栈顺序
    关于栈——不针对特定实现的分析
    c语言15行实现简易cat命令
    C11 constant expressions 常量表达式
    一个fork短码的扩展版本
    为什么C++没有对应realloc的new操作符呢?
  • 原文地址:https://www.cnblogs.com/kongbursi-2292702937/p/11356298.html
Copyright © 2020-2023  润新知