题解 AT3718 [ABC081B] Shift only
Posted tearing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了题解 AT3718 [ABC081B] Shift only相关的知识,希望对你有一定的参考价值。
分析
直接暴力。
我们可以根据题意进行模拟,使用二重循环即可。
代码讲解
- 定义变量(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];
- 使用一个死循环,当无法继续(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)整除使用的布尔型变量。
②循环的结束条件。
- 输出最终结果。
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的主要内容,如果未能解决你的问题,请参考以下文章
AT_abc106_d [ABC106D] AtCoder Express 2 题解
题解 AT3717 [ABC081A] Placing Marbles