题解 AT3718 [ABC081B] Shift only

Posted tearing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了题解 AT3718 [ABC081B] Shift only相关的知识,希望对你有一定的参考价值。

题目传送门


分析

直接暴力。
我们可以根据题意进行模拟,使用二重循环即可。


代码讲解

  1. 定义变量(n)和计数数组(cnt),再定义数组(a)并输入。
    int a[1000000];
    int n,cnt=0;;
    cin>>n;
    int n,cnt=0;;
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
  1. 使用一个死循环,当无法继续(div2)时,结束循环。
        bool pd=true;//①
        for(int j=1;j<=n;j++) 
        {
            if(a[j]%2!=0)
            {
                pd=false;
                break;
            } 
        }
        if(pd==false)break;//②
        if(pd)
        {
            cnt++;
            for(int j=1;j<=n;j++)
                a[j]/=2;
        } 

①判断能否被(2)整除使用的布尔型变量。
②循环的结束条件。

  1. 输出最终结果。
    cout<<cnt; 

CODE

#include <bits/stdc++.h>
using namespace std;
int a[1000000];
int main()
{
    int n,cnt=0;;
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    for(int i=1;;i++)
    {
        bool pd=true;
        for(int j=1;j<=n;j++) 
        {
            if(a[j]%2!=0)
            {
                pd=false;
                break;
            } 
        }
        if(pd==false)break;
        if(pd)
        {
            cnt++;
            for(int j=1;j<=n;j++)
                a[j]/=2;
        } 
    } 
    cout<<cnt; 
    return 0;
}

以上是关于题解 AT3718 [ABC081B] Shift only的主要内容,如果未能解决你的问题,请参考以下文章

题解 AT5228 [ABC162A] Lucky 7

AT_abc139f 题解

AT_abc106_d [ABC106D] AtCoder Express 2 题解

题解 AT3717 [ABC081A] Placing Marbles

题解 AT4170 [ABC103A] Task Scheduling Problem

题解 AT4164 [ABC102A] Multiple of 2 and N