• CF 1708A/数学思维


    CF1708A

    A. Difference Operations
    time limit per test1 second
    memory limit per test256 megabytes
    inputstandard input
    outputstandard output
    You are given an array a
    consisting of n
    positive integers.

    You are allowed to perform this operation any number of times (possibly, zero):

    choose an index i (2≤i≤n), and change ai to a[i]−a[i−1].Is it possible to make a[i]=0 for all 2≤i≤n?

    Input
    The input consists of multiple test cases. The first line contains a single integer t (1≤t≤100) — the number of test cases. The description of the test cases follows.

    The first line contains one integer n (2≤n≤100) — the length of array a.The second line contains n integers a1,a2,…,an (1≤ai≤109).

    Output
    For each test case, print “YES” (without quotes), if it is possible to change ai
    to 0 for all 2≤i≤n, and “NO” (without quotes) otherwise.

    You can print letters in any case (upper or lower).

    Example
    inputCopy
    4
    2
    5 10
    3
    1 2 3
    4
    1 1 1 1
    9
    9 9 8 2 4 4 3 5 3

    outputCopy
    YES
    YES
    YES
    NO

    Note
    In the first test case, the initial array is [5,10].
    You can perform 2 operations to reach the goal:

    Choose i=2, and the array becomes [5,5].
    Choose i=2, and the array becomes [5,0].
    In the second test case, the initial array is [1,2,3].
    You can perform 4 operations to reach the goal:

    Choose i=3, and the array becomes [1,2,1].
    Choose i=2, and the array becomes [1,1,1].
    Choose i=3, and the array becomes [1,1,0].
    Choose i=2, and the array becomes [1,0,0].

    In the third test case, you can choose indices in the order 4, 3, 2.

    数学思维

    给一个数组,首先a[1]要变成0,一定要是a[0]的倍数,然后a[2]要变成0,要是a[1]以及a[1]中间可变成的值的倍数,如果到了a[2],则说明a[1]以及a[1]中间可变成的值肯定都是a[0]的倍数,所以a[2]要变成0就也必须要是a[0]的倍数,依次类推,a[0]是0要额外考虑。

    #include
    using namespace std;
    int main()
    {
        int t;
        cin>>t;
        for(int i=0;i<t;i++)
        {
            int n;
            cin>>n;
            int a[105]={0};
            bool flag=1;
            for(int j=0;j<n;j++) cin>>a[j];
            if(a[0]==0)
            {
                for(int j=1;j<n;j++)
                {
                    if(a[j]!=0)
                    {
                        flag=0;
                        break;
                    }
                }
            }
            else
            {
                for(int j=1;j<n;j++)
                {
                    if(a[j]%a[0])
                    {
                        flag=0;
                        break;
                    }
                }
            }
            (flag)?cout<<"YES"<<endl:cout<<"NO"<<endl;
        }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
  • 相关阅读:
    ROS1和ROS2的区别
    iOS 获取模拟器沙盒路径
    framework watchdog
    通信达行情接口有什么用?
    server和client之间进行Socket通信,进行数据切片
    java框架常见的面试题
    内网渗透学习-环境搭建
    SpringBoot框架SpEL表达式注入漏洞复现与原理分析
    跨境电商如何更好地备战销售旺季?
    Unity编辑器扩展: 程序化打图集工具
  • 原文地址:https://blog.csdn.net/m0_74053777/article/details/133970912