출처:https://www.acmicpc.net/problem/10093
문제
두 양의 정수가 주어졌을 때, 두 수 사이에 있는 정수를 모두 출력하는 프로그램을 작성하시오.
조건
첫째 줄에 두 수 사이에 있는 수의 개수를 출력한다.
둘째 줄에는두 수 사이에 있는 수를 오름차순으로 출력한다.
Solve
위 문제는 Oveflow를 조심해서 풀어야한다. 은 매우매우 큰 숫자이기 때문에, int형 내에서는 표현이 불가능한 숫자이다. 따라서, long long 형태를 써야한다.
그리고 , 헷갈리기 쉬운데 A,B사이의 대소관계가 나오지 않았기 때문에 A가 큰 값이 나올 수 도 , B가 큰 값이 나올 수도 있다. 즉, A를 기준으로 작성했다가 틀릴 수 있다.
#include <bits/stdc++.h>
using namespace std;
long long s, e;
void solve()
{
//Start보다 End가 크다면 바꿔준다.
if (s > e)
swap(s, e);
//start와 end으 ㅣ차이가 1이면 0을 출력해주고 종료해준다.
if (s == e || e - s == 1)
{
cout << 0;
return;
}
cout << e - s - 1 << '\n';
for (long long i = s + 1; i < e; i++)
{
cout << i << " ";
}
}
int main()
{
cin >> s >> e;
solve();
return 0;
}