가깟으로 500을 종료 직전에 submit 했는데.. 챌 당해서 마음이 아팠다..
다들 빨리 푼 250을 늦게 풀어서 다시 blue 로 복귀하는줄 알았는데.. 오히려 rating 이 올랐다..
흠.. 그러고보니 한국사람중에 500을 푼 사람이 아무도 없다.. 쉽지 않은 문제였군..
어쨋거나 Yellow 1차 방어전 성공..~




Level1 - LuckyRemainder

super(x) = x에서 임의의 digit 몇개를 빼서 만들수 있는수를 모두 더한 수..
예를 들어 x = 123 이라고 하면
super(123) = 123 + 12 + 23 + 13 + 1 + 2 + 3 = 177 이다.
x 가 주어질때, super(x) % 9 구하기..

1) x % 9 = (x의 각 digit 의 합) % 9    <== 맞나???
2) super(x) 의 모든 set 의 원소를 구하면 각 digit 은 2^(digit개수-1) 개가 나온다.. 이걸 다 더하면 됨..

코드는 짧지만 그닥 빨리 풀 수 있는 문제는 아니었는데.. 249 점 맞은 사람은 뭐임??

  1 #include <iostream>
  2 #include <cstdio>
  3 #include <algorithm>
  4 #include <vector>
  5 #include <string>
  6 #include <queue>
  7 using namespace std;
  8 //#define min(x, y) ((x) > (y) ? (y) : (x))
  9 //#define max(x, y) ((x) > (y) ? (x) : (y))
 10 //#define INF 999999999
 11 //#define EPS 1e-14
 12
 13 class LuckyRemainder {
 14 public:
 15
 16 int getLuckyRemainder(string X)
 17 {
 18     int i;
 19     int len;
 20     int sum;
 21     len = X.size();
 22     sum = 0;
 23     for (i = 0; i < X.size(); i++) {
 24         sum += X[i]-'0';
 25         sum %= 9;
 26     }
 27     for (i = 0; i < len-1; i++) {
 28         sum *= 2;
 29         sum %= 9;
 30     }
 31     return sum % 9;
 32 }
 33
 34 };


'Problem Solving > TopCoder logs' 카테고리의 다른 글

TCO12 R1A - 606등 -_-;;  (0) 2012.04.01
SRM 529  (0) 2012.01.15
SRM 521  (0) 2011.10.24
SRM 511  (0) 2011.07.04
TCO11 R1 - 탈락  (0) 2011.06.23
SRM 507 - 나이스!  (0) 2011.05.30
TCO11 Qual2  (0) 2011.05.20
TCO11 Qual1  (2) 2011.05.15
SRM 504 - unrated event  (0) 2011.04.27
SRM 503 흑흑 ㅠ_ㅠ;;  (0) 2011.04.18

to Top