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
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;
|
|
}
|