题目传送门
一道模拟题……
纯模拟肯定不行,考虑优化。60=22×3×5,也就是说我们判断组合后的数字能否被 2,3,10 整除即可。
如果这个数能被 2 整除,那么原数一定会存在偶数;如果这个数能被 3 整除,那么它的数字和应该也能被 3 整除;如果这个数能被 10 整除,那么原数一定存在 0。
值得注意的是,如果原数只出现过一个 0,那么该数是不能被 10 和 2 同时整除的。因此,我们还需要判断一下原数是否有除了 0 以外的偶数或者 2 个以上的 0。
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| #include <bits/stdc++.h> #define ll long long #define INF 1e9 using namespace std; int n; signed main() { ios :: sync_with_stdio(0); cin >> n; for (int i = 1; i <= n; i++) { string s; int sum = 0, cnt1 = 0, cnt2 = 0; bool flag1 = 0, flag2 = 0, flag3 = 0; cin >> s; for (int i = 0; i < s.size(); i++) { int num = s[i] - '0'; sum += num; if (num == 0) cnt1++; else if (num % 2 == 0) cnt2++; } if (sum % 3 == 0) flag1 = 1; if (cnt1) flag2 = 1; if (cnt2 or cnt1 > 1) flag3 = 1; if (flag1 and flag2 and flag3) cout << "red\n"; else cout << "cyan\n"; } return 0; }
|