https://www.acmicpc.net/problem/5724
코드 (C)
#include <stdio.h>
int main()
{
while (1)
{
int n;
scanf("%d", &n);
if (n == 0) break;
else
{
printf("%lld\n", n * (n + 1) * (2 * n + 1) / 6);
}
}
return 0;
}
코드 (C++)
#include <iostream>
using namespace std;
int main()
{
int n;
long long result;
while (1)
{
cin >> n;
if (n == 0) break;
else cout << n * (n + 1) * (2 * n + 1) / 6 << "\n";
}
return 0;
}
코드설명
n*n 정사각형으로 이루어진 그리드에 있는 서로 다른 정사각형의 개수는 n*(n+1)*(2n*1)/6 이다.
따라서 입력의 종료를 뜻하는 0이 나오면 break로 무한루프를 탈출하고 그렇지 않을 경우에는 위 식에 수를 대입해 계산한 결과를 출력한다.
느낀 점
처음에는 재귀함수를 써서 문제를 풀었는데, 틀려서 그냥 식을 바로 적고 그 식에 값을 대입해서 결과를 출력하는 방식으로 풀었다.
'PS (C, C++)' 카테고리의 다른 글
[백준/C & C++] 1259 펠린드롬수 (0) | 2022.09.05 |
---|---|
[백준/C & C++] 3009 네 번째 점 (0) | 2022.09.04 |
[백준/C & C++] 2920 음계 (0) | 2022.09.04 |
[백준/C & C++] 1297 TV 크기 (0) | 2022.09.03 |
[백준/C & C++] 7568 덩치 (0) | 2022.09.03 |