문제링크입니다: http://www.codewars.com/kata/5592e3bd57b64d00f3000047/train/cpp
/*
n개의 큐브를 쌓는 것이 당신의 임무이다.
제일 밑에 있는 큐브는 부피가 n^3이고 그 다음 큐브는 (n-1)^3,
그 다음은 (n-2)^3 ... 그리고 제일 위에 있는 큐브는 1^3이다.
총 부피 m을 매개변수로 받고 n이 존재한다면 n을 반환하고
그렇지 않다면 -1을 반환하시오
*/
#include <iostream>
using namespace std;
class ASum
{
public:
static long long findNb(long long m);
};
long long cube(long long n) //3제곱
{
int multiply = n;
for (int i = 0; i < 2; i++)
n *= multiply;
return n;
}
long long ASum::findNb(long long m)
{
long long n;
long long sum = 0;
for (n = 1; sum < m; n++) //합이 주어진 값보다 작을 때까지
{
sum += cube(n); //세제곱수를 꾸준히 더한다
if (sum == m) //답을 찾으면 반환
return n;
}
return -1;
}
int main(void)
{
cout << ASum::findNb(4183059834009) << endl;
cout << ASum::findNb(24723578342962) << endl;
cout << ASum::findNb(135440716410000) << endl;
cout << ASum::findNb(40539911473216) << endl;
cout << ASum::findNb(26825883955641) << endl;
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > codewars' 카테고리의 다른 글
codewars: Statistics for an Athletic Association (0) | 2018.01.30 |
---|---|
codewars: Simple Encryption #1 - Alternating Split (0) | 2018.01.30 |
codewars: Fibonacci, Tribonacci and friends (0) | 2018.01.29 |
codewars: Consecutive strings (0) | 2018.01.29 |
codewars: A Rule of Divisibility by 13 (0) | 2018.01.29 |