되는대로 살자

[C언어 기출문제&풀이] quirksome squares 본문

2009~2014/C/C++

[C언어 기출문제&풀이] quirksome squares

malu 2010. 11. 13. 08:32
프로그램 명: quirk
제한시간: 2 초
//제한시간 1 초에서 2 초로 늘립니다.

짝수자리의 수를 입력으로 받아 두 수를 반으로 자른 합의 제곱이 원래 수가 되는 수를 quirksome 수라 한다.

예로 3025 는 4 자리수 quirksome 수 이다.

(30+25)2 = 3025

예로 2 가 입력으로 주어지면 00 에서 99 까지 수중 quirksome 수를 출력하면 된다.

입력

2,4,6,8 중 하나가 입력으로 주어진다.

출력

한 줄에 하나의 수를 출력한다.

입출력 예

입력 

2

출력

00
01
81
출처: http://acm.uva.es/p/v2/256.html

출력 형식의 보충

a = 12;
b = 7;

인 경우 몇가지 printf 포맷에 대해서 알아보면

  • printf("%5d",a); //5 자리 확보후 오른쪽에 맞추어 출력
    12345
       12
    
  • printf("%05d",a); //공백은 0 으로 채워줌.
    12345
    00012
    
  • printf("%-5d",a); //5 자리 확보후 왼쪽에 맞추어 출력
    12345
    12
    
  • printf("%*d",b,a);//변수로 폭을 설정. 변수 b 만큼 확보후 오른쪽에 맞추어 a 를 출력
    1234567
         12
    



#include <stdio.h>
#include <math.h>

int main()
{
 int n,i,j,max=1,d=10;
 scanf("%d",&n);
 for(i=0;i<n;i++)
  max*=10;
 for(i=0;i<n-2;i++) d*=10;
 for(i=0;i<sqrt(max);i++)
 {
  if(i*i>=d&&i*i==(i*i%d+i*i/d)*(i*i%d+i*i/d)) printf("%0*d%0*d\n",n/2,i*i/d,n/2,i*i%d);
  else if(i*i*i*i==i) printf("%0*d%0*d\n",n/2,i*i/d,n/2,i*i%d);
 } 
}