Computer Science/Algorithm

[Algorithm/C] BOJ.1977 완전제곱수

재오니소스 2017. 12. 22. 22:39


접근방법

1. 루트를 씌운값이랑 루트를 씌운 후 소수점을 버린 값이랑 비교한다.


/*

https://www.acmicpc.net/problem/1977

완전제곱수

M과 N이 주어질 때 M이상 N이하의 자연수 중 

완전제곱수인 것을 모두 골라 그 합을 구하고 그 중 최소값을 찾는 프로그램을 작성하시오. 

예를 들어 M=60, N=100인 경우 

60이상 100이하의 자연수 중 

완전제곱수는 64,  81,  100 이렇게 총 3개가 있으므로 

그 합은 245가 되고 이 중 최소값은 64가 된다.

Writer : Mun Jae In

Date : 2017.12.22

*/


#include <stdio.h>

#include <math.h>


int main(int argc, char * argv[])

{

int m, n;

int sum = 0;

int min = 0;

int i = 0;

scanf("%d",&m); scanf("%d",&n);


for( ; m<=n; m++)

{

if(sqrt((double)m) - (int)sqrt((double)m) == 0)

{

i++;

sum += m;

if(i == 1)

{

min = m;

}

//printf("m : %d\n",m);

//printf("sum : %d\n",sum);

}

}


if(sum>0)

{

printf("%d\n",sum);

printf("%d\n",min);

}

else

{

printf("-1\n");

}

return 0;

}


출처