답안 #205408

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
205408 2020-02-28T20:28:01 Z luciocf Lutrija (COCI19_lutrija) C++14
28 / 70
262 ms 428 KB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

bool prime(ll x)
{
	if (x <= 1) return 0;

	for (int i = 2; 1ll*i*i <= x; i++)
		if (x%i == 0)
			return false;

	return true; 
}

int main(void)
{
	ll a, b;
	scanf("%lld %lld", &a, &b);

	if (abs(b-a) == 2)
	{
		printf("2\n%lld %lld\n", a, b);
		return 0;
	}

	if (b-a == 4 && prime(a+2))
	{
		printf("3\n%lld %lld %lld\n", a, a+2, b);
		return 0;
	}

	if (a-b == 4 && prime(b+2))
	{
		printf("3\n%lld %lld %lld\n", b, b+2, a);
		return 0;
	}

	if (a < b)
	{
		if (a == 2)
		{
			if (prime(b-2)) printf("2\n2 %lld\n", b);
			else if (prime(b+2)) printf("3\n2 %lld %lld\n", b+2, b);
			else printf("-1\n");
		}
		else
		{
			if (!prime(a-2) && !prime(a+2)) printf("-1\n");
			else
			{
				if (!prime(b-2) && !prime(b+2)) printf("-1\n");
				else
				{
					if (prime(a-2) && prime(b-2)) printf("3\n%lld 2 %lld\n", a, b);
					else if (prime(a-2) && prime(b+2)) printf("4\n%lld 2 %lld %lld\n", a, b+2, b);
					else if (prime(a+2) && prime(b-2)) printf("4\n%lld %lld 2 %lld\n", a, a+2, b);
					else printf("5\n%lld %lld 2 %lld %lld\n", a, a+2, b+2, b);
				}
			}
		}
	}
	else
	{
		if (b == 2)
		{
			if (prime(a-2)) printf("2\n2 %lld\n", a);
			else if (prime(a+2)) printf("3\n2 %lld %lld\n", a+2, a);
			else printf("-1\n");
		}
		else
		{
			if (!prime(b-2) && !prime(b+2)) printf("-1\n");
			else
			{
				if (!prime(a-2) && !prime(a+2)) printf("-1\n");
				else
				{
					if (prime(b-2) && prime(a-2)) printf("3\n%lld 2 %lld\n", b, a);
					else if (prime(b-2) && prime(a+2)) printf("4\n%lld 2 %lld %lld\n", b, a+2, a);
					else if (prime(b+2) && prime(a-2)) printf("4\n%lld %lld 2 %lld\n", b, b+2, a);
					else printf("5\n%lld %lld 2 %lld %lld\n", b, b+2, a+2, a);
				}
			}
		}
	}
}

Compilation message

lutrija.cpp: In function 'int main()':
lutrija.cpp:21:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld %lld", &a, &b);
  ~~~~~^~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 256 KB Output is correct
2 Incorrect 5 ms 256 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 380 KB Output is correct
2 Correct 5 ms 376 KB Output is correct
3 Correct 5 ms 428 KB Output is correct
4 Correct 5 ms 256 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 256 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 408 KB Output is correct
2 Correct 5 ms 376 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 376 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 376 KB Output is correct
2 Correct 5 ms 376 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 241 ms 376 KB Output is correct
2 Correct 5 ms 256 KB Output is correct
3 Correct 5 ms 256 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 243 ms 364 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 262 ms 376 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 166 ms 256 KB Output isn't correct
2 Halted 0 ms 0 KB -