오래 고민한 문제다..! 이런거 참 생각을 잘 못하는거같다 어떤 화분을 깨면 화분에 해당하는 숫자가 오른쪽에 임의에 화분에 있다면 그 화분도 깰수있다 계속 연속적으로 이어져간다 자 생각을 해보자..! 맨 처음 화분은 무조건 깨야만한다. 안그러면 아무도 깨주지 않으므로..! 그럼 맨 처음 화분에 포함되는 수를 앞으로 만난다면 그 화분도 무조건 깨져야한다 그럼 입력받으면서 처리할 수 있다..! 화분을 깨지는 수를 계속 저장해가며 하나라도 가지고 있으면 깨버리자! 소스는 참 짧다! 처음에는 set을 썼는데 그럼 시간이 너무 오래 걸린다 배열을 이용하자 소스코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include using namespace std; #define ll long..
참 어려워 보이는 문제다 근데 생각해보면 쉬운 문제다 물론 long long 안써서 처음에 틀렸다 ㅎㅎ 먼저 우리가 알아야할 x들은 소수라는 점을 기억하자 그럼 c1,c3,c5,c6은 소수 2개의 곱이므로 유일한 수 2개가 있을 것이다. 결국 완탐하면 된다! 이 문제에서 x4랑 x8은 의미없다 쓰지 않는다 완전탐색을 할 때 어떤 수 2개를 곱해서 c가 되야하므로 i*ic1>>c2>>c3>>c4>>c5>>c6; vector x1,x2,x3,x4,x5,x6,x7,x8; solve(c1,x1,x2); solve(c3,x6,x7); solve(c5,x2,x3); solve(c6,x6,x5); for(int a=0;a