되는대로 살자

[C언어 기출문제&풀이] 거듭 제곱 테이블 본문

2009~2014/C/C++

[C언어 기출문제&풀이] 거듭 제곱 테이블

malu 2010. 11. 10. 20:44

프로그램 명: table(open problem)
제한시간: 1 초

2 에서 n 의 10 거듭 제곱 테이블을 만드는 것이 문제이다.

n 이 3 일 때 출력은 아래와 같다.

           1     2     3     4     5     6     7     8     9    10
     2     2     4     8    16    32    64   128   256   512  1024
     3     3     9    27    81   243   729  2187  6561 19683 59049

출력 형식은 3^10 = 59094 즉 5 자리이므로 공백을 위한 한 자리를 추가한 6 자리로

타이틀을 출력 후,

123456123456123456123456123456123456123456123456123456123456123456
           1     2     3     4     5     6     7     8     9    10
다음 줄 부터는 6 자리 확보후 오른쪽에 맞추어 모든 수를 출력한다.

123456123456123456123456123456123456123456123456123456123456123456
     2     2     4     8    16    32    64   128   256   512  1024
     3     3     9    27    81   243   729  2187  6561 19683 59049

입력

2 에서 9 사이의 자연수가 입력으로 주어진다.

출력

출력 예의 형식으로 출력한다.

n 에 따라 각 수가 확보하는 자릿수가 다르다는 것에 주의 한다.

입출력 예

입력

3

출력

           1     2     3     4     5     6     7     8     9    10
     2     2     4     8    16    32    64   128   256   512  1024
     3     3     9    27    81   243   729  2187  6561 19683 59049
출처:dovelet
풀이 : 결정적 힌트 printf("%nd",i); n 속에 숫자를 넣으면 그 자리 안에 채워서 숫자를 출력한다. 
소스코드 : 
#include <stdio.h>
int main()
{
 int n,i,j,sum;
 scanf("%d",&n);
 printf("      ");
 for(i=1;i<=10;i++)
  printf("%6d",i);
 printf("\n");
 for(i=2;i<=n;i++)
 {
  sum=i;
  printf("%6d",i);
  for(j=1;j<=10;j++)
  {
   printf("%6d",sum);
    sum*=i;
  }
  printf("\n");
 }
}