Code/C/C++

구글 입사 시험.... 나라면.. 과연+_+?

알 수 없는 사용자 2007. 4. 4. 17:49

문제
------------------------------------
양의 정수 n에 대해서 1과 n 사이에 1이 나오는 횟수를 나타내는 함수를 f(n)이라고 한다. 예를 들어 f(13)=6이다.
f(n)=n이 되는 첫번째 양수는 1이다. 두번째 양수는 무엇인가.
--------------------------------------

답을 찾는 프로그램을 C, 파이썬...

코드:
/* c +_+냠냠*/
int N;
int Result;
int POW1, POW2, CNT;

N = 1; // 양수 N 시작

while( 1 ) {

++N;
POW1 = 10;
POW2 = 1;
Result = 0;

while( N >= POW1 ) {

  Result += (N / POW1 + 1) * POW2;
  if( ((N / POW2) % 10) < 1 ) --CNT;

  POW2 = POW1;
  POW1 *= 10;

}

if( N / POW2 == 1 )
  Result += (N % POW2)+1;

if( N == Result )
  break;
}

printf("The answer is %d",Result );

#python +_+ 쪽쪽
#!/usr/bin/env python
acc = 1
for n in xrange(2,1000000):
        num1 =  str(n).count('1')
        if num1 > 0 :
                acc += num1
                if acc == n :
                        print "answer = ", n
                        break
당신은-ㅁ ㅡ?
나라면... +_+?