ss_yangzirui @ 2024-11-11 18:36:08
问题 A: 2020DLOI小甲 第三题 交替位二进制数(1.3) 内存限制:128 MB 时间限制:1.000 S 评测方式:文本比较 命题人:外部导入 提交:523 解决:160 题目描述 给定 N 个正整数,检查它们的二进制表示是否总是 0、 1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。 如果满足输出”true”, 否则输出”false”。 输入 第 1 行: 1 个正整数 N,不超过 10000。 第 2 行: N 个正整数,不超过 1000000000。 输出 输出 N 个: true 或 false 。 样例输入 复制 2 5 7 样例输出 复制 true false 提示 【样例1解释】 5 的二进制表示是: 101, 7 的二进制表示是: 111。 【样例输入2】 3 11 12 13 【样例输出2】 false false false 【样例2解释】 11 的二进制表示是: 1011, 12 的二进制表示是: 1100。13 的二进制表示是: 1101。
by xywuyu @ 2024-11-11 18:45:37
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,a,e;
cin>>n;
for (int i=1;i<=n;i++)
{
bool b=0;
cin>>a;e=a&1;
while (a!=0)
{
if (e==(a>>1)&1)
{
cout<<"false ";b=1;break;
}
else {
e=(a>>1)&1;
a>>=1;
}
}
if (b)
continue;
cout<<"true ";
}
return 0;
}
by xywuyu @ 2024-11-11 18:45:55
@ss_yangzirui
by ss_yangzirui @ 2024-11-11 18:51:02
@liuli688 谢谢,已关注
by ss_yangzirui @ 2024-11-11 18:51:21
@xywuyu 谢谢,已关注
by liuli688 @ 2024-11-11 18:54:02
额,我把代码自删了
#include <cstdio>
int T, n;
signed main()
{
for (scanf("%d", &T); T--; )
{
scanf("%d", &n);
bool flag = n & 1, judge = true;
for (n >>= 1; n; n >>= 1)
{
if (not (n & 1 xor flag))
{
printf("false\n");
judge = false;
break;
}
flag = n & 1;
}
if (judge)
printf("true\n");
}
return 0;
}
by ss_yangzirui @ 2024-11-12 18:11:12
@liuli688 请问可以写c++代码吗
by ss_yangzirui @ 2024-11-12 18:11:28
@xywuyu 请问可以写c++代码吗
by liuli688 @ 2024-11-12 18:21:09
@ss_yangzirui 这不是 C++ 是什么?
by liuli688 @ 2024-11-12 18:23:38
这是适合萌新的版本。
#include <iostream>
using std::cin;
using std::cout;
int T, n;
signed main()
{
cin >> T;
while (T--)
{
cin >> n;
bool flag = n % 2, judge = true;
for (n /= 2; n != 0; n /= 2)
{
if (!(n % 2 ^ flag))
{
cout << "false\n";
judge = false;
break;
}
flag = n % 2;
}
if (judge)
cout << "true\n";
}
return 0;
}
by liuli688 @ 2024-11-12 18:25:34
@ss_yangzirui 还有,你都 AC 紫题了还要请教这么简单的题?不会是 ctjer 吧