문제 링크
https://www.acmicpc.net/problem/10093
문제 정보
입력
두 정수 A와 B가 주어진다.
출력
첫째 줄에 두 수 사이에 있는 수의 개수를 출력한다.
둘째 줄에는 두 수 사이에 있는 수를 오름차순으로 출력한다.
풀이
A, B의 범위가 1 <= A, B <= 10^15 이므로 long long 자료형을 사용해야 overflow가 발생하지 않는다. 그리고 문제에는 나와있지 않은 조건인데 만약 A와 B가 같거나, 또는 A와 B의 차가 1이라서 사이의 수가 존재하지 않는 다면 0을 출력하고 끝내면 된다. 나는 A가 B보다 무조건 작도록 swap() 함수를 사용했다.
소스 코드
#include <bits/stdc++.h>
using namespace std;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
long long A, B;
cin >> A >> B;
if (A > B) {
swap(A, B);
}
if (A == B || B - A == 1) {
cout << '0';
} else {
cout << B - A - 1 << '\n';
for (long long i = A + 1; i < B; i++) {
cout << i << ' ';
}
}
return 0;
}