题解 AT3718 【Shift only】
一道简单的题目,代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,i,sum=0,j;
cin>>n;
int a[n+1];
for (i=1;i<=n;i++) cin>>a[i];
for (;;)
{
int flag=0;//flag是用来判断是不是数组里全部的数都是偶数,每次弄完都要归0
for (i=1;i<=n;i++)
if (a[i]%2!=0)
{ flag=1; break; }//只要有一个是奇数,flag更新为1,直接退出循环,免得耗时
if (flag==1) break;//有奇数存在,整段垮掉
if (flag==0)
{
sum++;//次数+1
for (i=1;i<=n;i++)
a[i]/=2;//记得把数组里全部的数都除2
}
}
cout<<sum<<endl;//输出总次数
return 0;//好习惯
}