IT 프로그래밍/객체지향프로그래밍

객체지향 프로그래밍 13번 , 14번, 15번

기술1 2024. 4. 20. 10:16
반응형

 

#include <iostream>
#include <vector>


using namespace std;

int main()
{
	int count = 0;
	for (int x = 0; x <= 100; x++)
	{
		for (int y = 0; y <= 100; y++)
		{
			if (y <= 2.0 / 3 * x && y >= 1.0 / 3 * x && x * x + y * y <= 10000)
				count++;
		}
	}
	cout << count;
}

x와 y를 for문을 통해서 100번 반복시킵니다. 그 다음 if문을 통해서 문제에 있는 y=2/3x 와 y=1/3x의 조건식을 검사해주면 됩니다. y를 통해서 검사를 해줄 것이며 세번째 조건에서는 x와 y의 좌표가 원의 정식 x^2 + y+2 <= 10000 인지 확인해주면 됩니다. 

 

#include <iostream>


using namespace std;

bool rel_prime(int a, int b)
{
	int small = min(a, b);
	for (int i = 2; i <= small; i++)
	{
		if(a % i == 0 && b % i == 0)
			return false;
	}
}

int main()
{
	int count = 0;
	for (int i = 2; i <= 100; i++)
	{
		for (int j = 1 + i; j <= 100; j++)
		{
			for (int k = 1 + j; k <= 100; k++)
			{
				if (rel_prime(i, j) && rel_prime(j, k) && rel_prime(k, i))
					count++;
			}
		}
	}
	cout << count;
}

 

먼저 프라임을 세어주기 위한 함수를 만들어줍니다. a와 b가 서로소인 것을 판별하기 위해서 최소값을 찾은 후 그 최소값까지 모든 수로 나눠보고 공약수가 있으면 fasle를 반환하고 없으면 true를 반환하는 것입니다. 

 

그 다음 for문을 통해 i를 2부터 100까지 증가, j를 i+1부터 100까지 증가, k를 j+1부터 100까지 증가합니다. 그런 다음ㅈ rel_prime을 사용하여 세 개의 수가 서로소이면 count 하게 합니다.

 

#include <iostream>


using namespace std;


int main()
{
	int n;
	cin >> n;

	int count = 0;
	for (int i = 1; i <= n; i++)
	{
		int k = i;
		while (k > 0)
		{
			if (k % 10 == 0)
				count++;
			k / 10;
		}
	}
	cout << count;
	return 0;
}

해당 문제를 풀기 위해서는 계속해서 10을 나누었을 때 나머지가 0이 구하는 것이 존재하는지 보기 위해서 나누기 10을 통해서 해주면 됩니다. 0이 각 자리에 하나라도 존재한다면 0이 나오기 때문에 구할 수 있는 것입니다. 

 

 

반응형