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

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. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注