TopCoder SRM 454 Div 1
Problem Solving/TopCoder logs 2009. 12. 7. 23:08
일요일 새벽 2시에 열렸던 매치..
250 은 푸는데 좀 오래걸리고.. 나머지 시간은 500 코딩 삽질하다가 끝났다..
이번에도 10번 방에 20번째 시드를 받았는데.. 요즘 계속 빡센 방에만 걸리고있다..
rating 은 14 점 상승.. 하락하는거는 겨우 멈추긴했는데.. 흠..
근데.. 새벽 2시는 너무 힘든데..;;
Level1 - DoubleXor
double xor (^^) 연산을 새로 정의하였는데..
a, b, c, d, e, f 가 각각 한자리 digit 이고, x = (a^d)%10, y = (b^e)%10, z = (c^f)%10 라고 하면
abc ^^ def = xyz 가 된다..
만약에 두 수의 자리수가 다르면 하나에 leading 0 를 붙여서 길이를 맞춘다..
N ^^ (N-1) ^^ (N-2) ^^ ... ^^ 1 을 구하기..
해법은 그냥 Brute Force..
좀더 짧게 짤수도 있지만 그냥 시키는데로 충실하게 짰다..
Level2 - NumbersAndMatches
성냥을 이용하여 숫자를 만들 수 있다.. 임의의 수 N 이 들어올때.. 최대 K 개의 성냥을 이동할 수 있을때.. 만들수 있는 수가 몇개나 있는지 구하기.. 성냥은 다른 digit 으로 이동시킬수도 있다.. 그러나 새로 성냥을 더하거나 남는거를 버릴수는 없다..
to be updated
Level3 - MegaSum
to be updated..
250 은 푸는데 좀 오래걸리고.. 나머지 시간은 500 코딩 삽질하다가 끝났다..
이번에도 10번 방에 20번째 시드를 받았는데.. 요즘 계속 빡센 방에만 걸리고있다..
rating 은 14 점 상승.. 하락하는거는 겨우 멈추긴했는데.. 흠..
근데.. 새벽 2시는 너무 힘든데..;;
Level1 - DoubleXor
double xor (^^) 연산을 새로 정의하였는데..
a, b, c, d, e, f 가 각각 한자리 digit 이고, x = (a^d)%10, y = (b^e)%10, z = (c^f)%10 라고 하면
abc ^^ def = xyz 가 된다..
만약에 두 수의 자리수가 다르면 하나에 leading 0 를 붙여서 길이를 맞춘다..
N ^^ (N-1) ^^ (N-2) ^^ ... ^^ 1 을 구하기..
해법은 그냥 Brute Force..
좀더 짧게 짤수도 있지만 그냥 시키는데로 충실하게 짰다..
1 #include <iostream>
2 #include <cstdio>
3 #include <algorithm>
4 #include <vector>
5 #include <string>
6 using namespace std;
7 //#define min(x, y) ((x) > (y) ? (y) : (x))
8 //#define max(x, y) ((x) > (y) ? (x) : (y))
9 //#define INF 999999999
10
11 class DoubleXor {
12 public:
13
14 int calculate(int N)
15 {
16 int res;
17 int i, j, k, temp;
18 int len1, len2;
19 char buf1[100], buf2[100];
20 res = N;
21 for (k = N-1; k >= 1; k--) {
22 sprintf(buf1, "%d", res);
23 sprintf(buf2, "%d", k);
24 len1 = strlen(buf1);
25 len2 = strlen(buf2);
26 if (len1 == len2) {
27 temp = 0;
28 for (i = 0; i < len1; i++) {
29 temp *= 10;
30 temp += ((buf1[i]-'0') ^ (buf2[i]-'0')) % 10;
31 }
32 res = temp;
33 }
34 else if (len1 > len2) {
35 temp = 0;
36 for (i = 0; i < len1-len2; i++) {
37 temp *= 10;
38 temp += buf1[i]-'0';
39 }
40 for (j = 0; j < len2; j++, i++) {
41 temp *= 10;
42 temp += ((buf1[i]-'0') ^ (buf2[j]-'0')) % 10;
43 }
44 res = temp;
45 }
46 else {
47 temp = 0;
48 for (j = 0; j < len2-len1; j++) {
49 temp *= 10;
50 temp += buf2[j]-'0';
51 }
52 for (i = 0; i < len1; i++, j++) {
53 temp *= 10;
54 temp += (((buf1[i]-'0') ^ buf2[j]-'0')) % 10;
55 }
56 res = temp;
57 }
58 }
59 printf("res = %d\n", res);
60 return res;
61 }
62 };
2 #include <cstdio>
3 #include <algorithm>
4 #include <vector>
5 #include <string>
6 using namespace std;
7 //#define min(x, y) ((x) > (y) ? (y) : (x))
8 //#define max(x, y) ((x) > (y) ? (x) : (y))
9 //#define INF 999999999
10
11 class DoubleXor {
12 public:
13
14 int calculate(int N)
15 {
16 int res;
17 int i, j, k, temp;
18 int len1, len2;
19 char buf1[100], buf2[100];
20 res = N;
21 for (k = N-1; k >= 1; k--) {
22 sprintf(buf1, "%d", res);
23 sprintf(buf2, "%d", k);
24 len1 = strlen(buf1);
25 len2 = strlen(buf2);
26 if (len1 == len2) {
27 temp = 0;
28 for (i = 0; i < len1; i++) {
29 temp *= 10;
30 temp += ((buf1[i]-'0') ^ (buf2[i]-'0')) % 10;
31 }
32 res = temp;
33 }
34 else if (len1 > len2) {
35 temp = 0;
36 for (i = 0; i < len1-len2; i++) {
37 temp *= 10;
38 temp += buf1[i]-'0';
39 }
40 for (j = 0; j < len2; j++, i++) {
41 temp *= 10;
42 temp += ((buf1[i]-'0') ^ (buf2[j]-'0')) % 10;
43 }
44 res = temp;
45 }
46 else {
47 temp = 0;
48 for (j = 0; j < len2-len1; j++) {
49 temp *= 10;
50 temp += buf2[j]-'0';
51 }
52 for (i = 0; i < len1; i++, j++) {
53 temp *= 10;
54 temp += (((buf1[i]-'0') ^ buf2[j]-'0')) % 10;
55 }
56 res = temp;
57 }
58 }
59 printf("res = %d\n", res);
60 return res;
61 }
62 };
Level2 - NumbersAndMatches
성냥을 이용하여 숫자를 만들 수 있다.. 임의의 수 N 이 들어올때.. 최대 K 개의 성냥을 이동할 수 있을때.. 만들수 있는 수가 몇개나 있는지 구하기.. 성냥은 다른 digit 으로 이동시킬수도 있다.. 그러나 새로 성냥을 더하거나 남는거를 버릴수는 없다..
to be updated
Level3 - MegaSum
to be updated..
'Problem Solving > TopCoder logs' 카테고리의 다른 글
TopCoder SRM 459 Div 1 (0) | 2010.01.20 |
---|---|
TopCoder SRM 458 Div 1 (0) | 2010.01.17 |
TopCoder SRM 457 Div 1 (0) | 2010.01.06 |
[SRM 456] 2009년 마지막 SRM (0) | 2009.12.23 |
TopCoder SRM 455 Div 1 (0) | 2009.12.19 |
TopCoder SRM 453.5 (??) Div 1 (0) | 2009.11.26 |
[SRM 453] 탑코더 아레나 폭발 -> unrated event (4) | 2009.11.18 |
TopCoder SRM 450 Div 1 (0) | 2009.10.19 |
TopCoder Member Pilot 2 (0) | 2009.10.01 |
TopCoder SRM 449 Div 1 (0) | 2009.09.24 |