#include <stdio.h>
int main()
{
int m, n, i, sum=0, min=100000;
scanf("%d %d", &m, &n);
for(i=1; i*i<=n; i++)
if(i*i>=m && i*i<=n)
{
sum+=i*i;
if(i*i<=min) min=i*i;
}
printf("%d\n%d", sum, min);
return 0;
}
코드업 문제고 완전제곱수 문제입니다 고등학생인데 뭐가 어떻게 되는건지 잘 모르겠어서요.. 해설 해주시면 감사하겠습니다.
입력
첫 째 줄에 M이, 둘째 줄에 N이 주어진다. M과 N은 10000이하의 자연수이며 M은 N보다 같거나 작다.
출력
M이상 N이하의 자연수 중 완전제곱수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최소값을 출력한다. 단, M이상 N이하의 자연수 중 완전제곱수가 없을 경우는 첫째 줄에 -1을 출력한다.
입력예시
60
100
출력예시
245
64
부탁드립니다..
문제1) 완전제곱수 (고등1)M과 N이 주어질 때 M이상 N이하의 자연수 중 완전제곱수인 것을 모두 골라 그 합을 구하고 그 중 최소값을 찾는 프로그램을 작성하시오.예를 들어 M=60, N=100인 경우60이상 100이하의 자연수 중 완전제곱수는64, 81, 100이렇게 총 3개가 있으므로 그 합은 245가 되고 이 중 최소값은 64가 된다.
문제 설명을 안적었네요 이게 문제 설명입니다
어느부분이 모르겟니
sum이랑 min이 왜 0이랑 100000인지랑 if문 밑에 if문이 어떻게 또 들어가는지가 궁금합ㅂ니다
아 sum이랑 min이 왜 0이랑 100000인지는 알아냈습니다
뭘 모르겠다는거임 니가 문제로 쓴거 그대로 구현한게 저 코드 아냐? - dc App
맞는데 학교 수업시간에 이걸 발표해야하는데 프로그래밍 시작한지 아직 3일정도밖에 안돼서 잘 모르겠어서요,, 구글링하니까 저 코드가 나오던데 어떻게 해서 저런 코드가 나오는지를 모르겠네요.. 사실 논리연산자가 뭔지도 똑바로 모르는데 당장 내일 저걸 발표를 하긴 해야하니..
설명하기 난감한게 진짜 그대로 읽은거랑 똑같은거라 그럼 논리연산자 의미만 알면 뭔소린지 알거임 그거 개념 찾아보면 될듯 - dc App
논리연산자 and찾아봤는데 0이면 거짓이고 0이 아니면 참이라는게 저거랑 무슨 연관성이 있는지 모르겠어요..
첫번째 if 문 안에 조건안에 && 는 and연산자인데 양쪽이 전부 참이면 저 if 블록이 실행되는거임
아하 감사합니다
sum+=i*i; if(i*i<=min) min=i*i;
이부분은 어떻게 되는건지 설명 좀 부탁드려도 될까요
sum+=i*i; 이거는 일종의 줄임말 같은건데 풀어서 말하면 sum = sum + i*i 이렇게 됨
대입연산자 라고 검색하면 나옴
어라..sum이 완전제곱수의 합이고 min이 완전제곱수중에서 최소값을 의미하는게 아니었나요?
그리고 i*i가 min보다 작거나 같을때 min은 i*i가 되는거죠?