写完才发现有两种方法
2025-02-04 16:40:48
发布于:湖北
7阅读
0回复
0点赞
第一次发正常的题解
第一种:每个数字都要二进制转十进制再判断并最后输出
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll t_t(string x){
int len = x.size();
ll ret = 0;
int p = 0;
for (int i = len - 1;i >= 0;i--){
ret += ((int)x[i] - '0') * ((int)pow(2, p++));
}
return ret;
}
int main(){
int n;
cin >> n;
int cnt = 0;
while(n--){
string nm;
cin >> nm;
ll num = t_t(nm);
if (num % 4 == 0){
cnt++;
}
}
cout << cnt;
return 0;
}
第二种:找规律
我们可以看出来不难在二进制中
二进制4 的倍数的最后两位一定为 “00”(二进制为“0”的除外 --> 二进制的0相当于十进制的0,也是4的倍数)
代码:
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
int cnt = 0;
while(n--) {
string x;
cin >> x;
int len = x.size();
if (x == "0") cnt++;
else if (len > 2 && x[len - 1] == '0' && x[len - 2] == '0') {
cnt++;
}
}
cout << cnt << endl;
return 0;
}
这里空空如也
有帮助,赞一个