[关闭]
@Dmaxiya 2020-12-12T15:23:42.000000Z 字数 4374 阅读 995

Codeforces Round #444 (Div. 2)

Codeforces


Contests 链接:Codeforces Round #444 (Div. 2)
过题数:3
排名:394/9651

A. Div. 64

题意

对于一个二进制表示的数字,问能否通过删去其中的某些位上的数字,使得最终剩下的数字是一个正的能够整除 的整数。

输入

输入为一个 ,表示一个二进制数。

输出

如果可以满足题意,则输出 ,否则输出

样例

输入 输出 提示
100010001 yes 将后两个 删除之后就是 ,它的十进制数就是 ,因此这个数字可以整除
100 no

题解

判断最高位的 后面是否有 即可。

过题代码

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstdlib>
  4. #include <cmath>
  5. #include <climits>
  6. #include <cfloat>
  7. #include <cstring>
  8. #include <string>
  9. #include <vector>
  10. #include <list>
  11. #include <queue>
  12. #include <stack>
  13. #include <map>
  14. #include <set>
  15. #include <bitset>
  16. #include <algorithm>
  17. #include <ctime>
  18. #include <functional>
  19. #include <iomanip>
  20. using namespace std;
  21. #define LL long long
  22. const int maxn = 200;
  23. char str[maxn];
  24. int main() {
  25. #ifdef LOCAL
  26. freopen("test.txt", "r", stdin);
  27. // freopen("out.txt", "w", stdout);
  28. #endif
  29. ios::sync_with_stdio(false);
  30. scanf("%s", str);
  31. bool flag = false;
  32. int cnt = 0;
  33. for(int i = 0; str[i]; ++i) {
  34. if(str[i] == '1' && !flag) {
  35. flag = true;
  36. }
  37. if(flag && str[i] == '0') {
  38. ++cnt;
  39. }
  40. }
  41. if(cnt >= 6) {
  42. printf("yes\n");
  43. } else {
  44. printf("no\n");
  45. }
  46. return 0;
  47. }

B. Cubes for Masha

题意

个魔方,每个魔方的 个面都写着一个 的数字,将魔方摆成一排,按顺序读出这些魔方最上面的数字组成的 位数,问 个魔方最多能够组成 到多大的数字内所有的数。

输入

第一行为一个整数 ,表示魔方的个数,接下去 行每行 范围内的整数,表示魔方 个面上的数字。

输出

输出一个魔方能够表示的数字的最大连续范围 的上界。

样例

输入 输出 提示
3
0 1 2 3 4 5
6 7 8 9 0 1
2 3 4 5 6 7
87 个魔方可以组成 内的任意一个整数,但是无法组成数字
3
0 1 3 5 6 8
1 2 4 5 7 8
2 3 4 6 7 9
98

题解

暴力枚举所有组合方式,然后跑一遍找到第一个不能表示的数字。

过题代码

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstdlib>
  4. #include <cmath>
  5. #include <climits>
  6. #include <cfloat>
  7. #include <cstring>
  8. #include <string>
  9. #include <vector>
  10. #include <list>
  11. #include <queue>
  12. #include <stack>
  13. #include <map>
  14. #include <set>
  15. #include <bitset>
  16. #include <algorithm>
  17. #include <ctime>
  18. #include <functional>
  19. #include <iomanip>
  20. using namespace std;
  21. #define LL long long
  22. const int maxn = 1000 + 100;
  23. int n;
  24. int num[10][maxn], Index[10];
  25. bool vis[maxn];
  26. void dfs(int depth, int x, int n) {
  27. if(depth == n) {
  28. vis[x] = true;
  29. return ;
  30. }
  31. for(int i = 0; i < 6; ++i) {
  32. dfs(depth + 1, x * 10 + num[Index[depth]][i], n);
  33. }
  34. }
  35. int main() {
  36. #ifdef Dmaxiya
  37. freopen("test.txt", "r", stdin);
  38. // freopen("out.txt", "w", stdout);
  39. #endif //Dmaxiya
  40. ios::sync_with_stdio(false);
  41. while(scanf("%d", &n) != EOF) {
  42. memset(vis, 0, sizeof(vis));
  43. for(int i = 0; i < n; ++i) {
  44. Index[i] = i;
  45. for(int j = 0; j < 6; ++j) {
  46. scanf("%d", &num[i][j]);
  47. }
  48. }
  49. do {
  50. for(int i = 1; i <= n; ++i) {
  51. dfs(0, 0, i);
  52. }
  53. } while(next_permutation(Index, Index + n));
  54. int ans = 1;
  55. for(int i = 1; i < maxn; ++i) {
  56. if(!vis[i]) {
  57. ans = i - 1;
  58. break;
  59. }
  60. }
  61. printf("%d\n", ans);
  62. }
  63. return 0;
  64. }

C. Solution for Cube

题意

给定一个 的魔方,问能否通过一次旋转,使得魔方复原。

输入

输入只包含一行 个整数 ,表示魔方 个面每个面的 个数字, 个数字分别表示 种不同的颜色。

输出

如果可以,则输出 ,否则输出

样例

输入 输出 提示
2 5 4 6 1 3 6 2 5 5 1 2 3 5 3 1 1 2 4 6 6 4 3 4 NO rVga5V.png
5 3 5 3 2 5 2 5 6 2 6 2 4 4 4 4 1 1 1 1 6 3 6 3 YES rVggV1.png

题解

这题就是个码农题,把每种旋转方式都写出来就行了。

过题代码

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstdlib>
  4. #include <cmath>
  5. #include <climits>
  6. #include <cfloat>
  7. #include <cstring>
  8. #include <string>
  9. #include <vector>
  10. #include <list>
  11. #include <queue>
  12. #include <stack>
  13. #include <map>
  14. #include <set>
  15. #include <bitset>
  16. #include <algorithm>
  17. #include <ctime>
  18. #include <functional>
  19. #include <iomanip>
  20. using namespace std;
  21. #define LL long long
  22. const int maxn = 100;
  23. int a[maxn];
  24. int main() {
  25. #ifdef LOCAL
  26. freopen("test.txt", "r", stdin);
  27. // freopen("out.txt", "w", stdout);
  28. #endif
  29. ios::sync_with_stdio(false);
  30. bool f = false;
  31. for(int i = 1; i <= 24; ++i) {
  32. scanf("%d", &a[i]);
  33. }
  34. if(a[1] == a[6] && a[3] == a[8] && a[5] == a[10] && a[7] == a[12] && a[9] == a[23] && a[11] == a[21] && a[24] == a[2] && a[22] == a[4]) {
  35. bool flag = true;
  36. for(int i = 0; i < 4; ++i) {
  37. if(a[17 + i] != a[17] || a[13 + i] != a[13]) {
  38. flag = false;
  39. break;
  40. }
  41. }
  42. if(flag) {
  43. f = true;
  44. }
  45. }
  46. if(a[1] == a[23] && a[3] == a[21] && a[5] == a[2] && a[7] == a[4] && a[9] == a[6] && a[11] == a[8] && a[24] == a[10] && a[22] == a[12]) {
  47. bool flag = true;
  48. for(int i = 0; i < 4; ++i) {
  49. if(a[17 + i] != a[17] || a[13 + i] != a[13]) {
  50. flag = false;
  51. break;
  52. }
  53. }
  54. if(flag) {
  55. f = true;
  56. }
  57. }
  58. if(a[3] == a[15] && a[4] == a[13] && a[17] == a[1] && a[19] == a[2] && a[10] == a[18] && a[9] == a[20] && a[16] == a[12] && a[14] == a[11]) {
  59. bool flag = true;
  60. for(int i = 0; i < 4; ++i) {
  61. if(a[21 + i] != a[21] || a[5 + i] != a[5]) {
  62. flag = false;
  63. break;
  64. }
  65. }
  66. if(flag) {
  67. f = true;
  68. }
  69. }
  70. if(a[10] == a[15] && a[9] == a[13] && a[16] == a[1] && a[14] == a[2] && a[3] == a[18] && a[4] == a[20] && a[17] == a[12] && a[19] == a[11]) {
  71. bool flag = true;
  72. for(int i = 0; i < 4; ++i) {
  73. if(a[21 + i] != a[21] || a[5 + i] != a[5]) {
  74. flag = false;
  75. break;
  76. }
  77. }
  78. if(flag) {
  79. f = true;
  80. }
  81. }
  82. if(a[6] == a[20] && a[5] == a[19] && a[14] == a[8] && a[13] == a[7] && a[22] == a[16] && a[21] == a[15] && a[18] == a[24] && a[17] == a[23]) {
  83. bool flag = true;
  84. for(int i = 0; i < 4; ++i) {
  85. if(a[9 + i] != a[9] || a[1 + i] != a[1]) {
  86. flag = false;
  87. break;
  88. }
  89. }
  90. if(flag) {
  91. f = true;
  92. }
  93. }
  94. if(a[6] == a[16] && a[5] == a[15] && a[14] == a[24] && a[13] == a[23] && a[22] == a[20] && a[21] == a[19] && a[18] == a[8] && a[17] == a[7]) {
  95. bool flag = true;
  96. for(int i = 0; i < 4; ++i) {
  97. if(a[9 + i] != a[9] || a[1 + i] != a[1]) {
  98. flag = false;
  99. break;
  100. }
  101. }
  102. if(flag) {
  103. f = true;
  104. }
  105. }
  106. if(f) {
  107. printf("YES\n");
  108. } else {
  109. printf("NO\n");
  110. }
  111. return 0;
  112. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注