ACM준비/기타

Reverse and Add

조규현15 2015. 1. 8. 10:29
반응형

문제풀이

>기존 숫자와 뒤집은 숫자를 합하여 결국 앞뒤가 구분없는 숫자를 만드는게 목표(ex 98789)

>최대크기를 고려하는게 중요

 

배울점

>기존의 int를 넘는 unsigned int 또는 long을 사용함으로써 해결을 할 수 있다.

>reverse함수에서 간단한 산술연산으로 구할 수 있다.

 

소스>성공

 

#include <stdio.h>

unsigned int reverse(unsigned int n)
{

    unsigned int n2 = 0;

    while (n)
    {
        n2 = (n2 * 10) + (n % 10);
        n /= 10;
    }
    return n2;
}

int main()
{

    int Case, count;
    unsigned int n, n2;

    scanf("%d", &Case);
    while (Case--)
    {

        scanf("%lu", &n);
        count = 0;

        while (1)
        {

            n2 = reverse(n);

            if (n2 == n)
                break;

            n += n2;
            count++;
        }

        printf("%d %lu\n", count, n);
    }
}
반응형

'ACM준비 > 기타' 카테고리의 다른 글

Bicoloring  (0) 2015.01.08
Complete Tree Labeling  (0) 2015.01.08
Self-describing Sequence  (0) 2015.01.08
Stacks of Flapjacks  (0) 2015.01.08
TheArcheologist'sDilemma  (0) 2015.01.08