You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

132 lines
4.4 KiB

#include <bits/stdc++.h>
using namespace std;
int main() {
//输入+输出重定向
freopen("../1290.in", "r", stdin);
int n;
cin >> n;
vector<string> a(n + 1);
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
int x;
cin >> x;
switch (x) {
case 0:
cout << 0 << endl;
break;
case 1:
for (int i = 1; i <= n; i++) cout << a[i] << endl;
break;
case 2:
for (int i = 1; i <= n; i++) {
string b = a[i].substr(a[i].size() - 1, 1); //最后一位
if (b == "0" || b == "2" || b == "4" || b == "6" || b == "8") cout << a[i] << endl;
}
break;
case 3:
for (int i = 1; i <= n; i++) {
int sum = 0;
for (char c:a[i]) {
sum += c - '0';
}
if (sum % 3 == 0) cout << a[i] << endl;
}
break;
case 4:
for (int i = 1; i <= n; i++) {
string lastTwo = a[i].substr(a[i].size() - 2, 2);//最后两个
//转字符串为数字
int num = 0;
istringstream(lastTwo) >> num;
if (num % 4 == 0)cout << a[i] << endl;
}
break;
case 5:
for (int i = 1; i <= n; i++) {
string lastOne = a[i].substr(a[i].size() - 1, 1);//最后一位
if (lastOne == "0" || lastOne == "5") cout << a[i] << endl;
}
break;
case 6:
for (int i = 1; i <= n; i++) {
string b = a[i].substr(a[i].size() - 1, 1);
if (b == "0" || b == "2" || b == "4" || b == "6" || b == "8") {
int sum = 0;
for (char c:a[i]) {
sum += c - '0';
}
if (sum % 3 == 0) cout << a[i] << endl;
}
}
break;
case 7:
for (int i = 1; i <= n; i++) {
int k = 0;
int jishuduan = 0;
int oushuduan = 0;
int duancount = 0;
for (int j = a[i].size() - 1; j >= 0; j--) {
k++;
if (k == 3) {
duancount++;
//奇数段
if (duancount % 2 == 1) {
int num = 0;
istringstream(a[i].substr(i, k)) >> num;
jishuduan += num;
} else { //偶数段
int num = 0;
istringstream(a[i].substr(i, k)) >> num;
oushuduan += num;
}
k = 0;
}
}
//如果还有剩余的位数
if (k > 0) {
duancount++;//段数还在增加
if (duancount % 2 == 1)//奇数段
{
int num = 0;
istringstream(a[i].substr(i, k)) >> num;
jishuduan += num;
} else { //偶数段
int num = 0;
istringstream(a[i].substr(i, k)) >> num;
oushuduan += num;
}
}
//计算绝对值
if (abs(jishuduan - oushuduan) % 7 == 0)cout << a[i] << endl;
}
break;
case 8:
for (int i = 1; i <= n; i++) {
int num = 0;
if (a[i].size() < 3) {
istringstream(a[i]) >> num;
} else {
istringstream(a[i].substr(a[i].size() - 3, 3)) >> num;
}
if (num % 8 == 0) cout << a[i] << endl;
}
break;
case 9:
for (int i = 1; i <= n; i++) {
int sum = 0;
for (char c:a[i]) {
sum += c - '0';
}
if (sum % 9 == 0) cout << a[i] << endl;
}
break;
}
//关闭文件
fclose(stdin);
return 0;
}