백준 9506 c++

magicdrill·2024년 3월 22일
0

백준 문제풀이

목록 보기
194/655

백준 9506 c++

#include <iostream>

using namespace std;

void input(int arr[]);
void check_arr(int arr[]);

int main(void)
{
	int* arr = new int[100000] {};

	input(arr);
	check_arr(arr);

	delete[] arr;

	return 0;
}

void input(int arr[])
{
	int A, i = 0;

	while (i <= 100000)
	{
		cin >> A;
		if (A == -1)
		{
			break;
		}
		else if (A > 2 && A < 100000)
		{
			arr[i] = A;
		}
		else
		{
			i--;
		}
		i++;
	}

	return;
}

void check_arr(int arr[])
{
	int i, j, k, total, N;
	int temp[100] = {};
	bool check = 0;

	for (i = 0; i < 100000; i++)
	{
		N = arr[i];
		if (N == 0)
		{
			break;
		}
		else
		{
			total = 0;
			k = 0;
			for (j = 1; j < N; j++)
			{
				if (N % j == 0)
				{
					total = total + j;
					if (total > N)
					{
						check = 0;
						break;
					}
					else if (total == N)
					{
						check = 1;
					}
					else
					{
						check = 0;
					}
					temp[k] = j;
					k++;
				}
				else
				{
					;
				}
			}
			if (check == 1)
			{
				cout << N << " = ";
				for (j = 0; j < k - 1; j++)
				{
					cout << temp[j] << " + ";
				}
				cout << temp[j] << endl;
			}
			else
			{
				cout << N << " is NOT perfect." << endl;
			}
		}
	}

	return;
}

0개의 댓글