题目大意
给你一个由阿拉伯数字组成的字符串,让你找出其中一个子序列,使其能被8整除
思路1
一个整数的末尾三位数能被8整除,则这个数能被8整除。
代码
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
const i64 inf = 8e18;
typedef pair<int, int> pii;
const int N = 1e5 + 10;
void solve() {
set<string> se;
for (int i = 0; i < 1000; i++)
if (i % 8 == 0) se.insert(to_string(i));
string s, t;
cin >> s;
for (int i = 0; i < s.size(); i++) {
t.push_back(s[i]);
if (se.find(t) != se.end()) {
cout << "YES\n" << t << endl;
return;
}
for (int j = i + 1; j < s.size(); j++) {
t.push_back(s[j]);
if (se.find(t) != se.end()) {
cout << "YES\n" << t << endl;
return;
}
for (int k = j + 1; k < s.size(); k++) {
t.push_back(s[k]);
if (se.find(t) != se.end()) {
cout << "YES\n" << t << endl;
return;
}
t.pop_back();
}
t.pop_back();
}
t.pop_back();
}
cout << "NO\n";
}
int main() {
ios::sync_with_stdio(0); cin.tie(0);
cout.tie(0);
int t = 1;
//cin >> t;
while (t --) solve();
return 0;
}