[BOJ/10093/C++] 숫자

SHark·2023년 2월 27일
0

BOJ

목록 보기
1/59

출처:https://www.acmicpc.net/problem/10093

문제

두 양의 정수가 주어졌을 때, 두 수 사이에 있는 정수를 모두 출력하는 프로그램을 작성하시오.

조건
첫째 줄에 두 수 사이에 있는 수의 개수를 출력한다.
둘째 줄에는두 수 사이에 있는 수를 오름차순으로 출력한다.

1A,B10151\leq A,B\leq10^{15}

Solve

위 문제는 Oveflow를 조심해서 풀어야한다. 101510^{15}은 매우매우 큰 숫자이기 때문에, 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;
}

0개의 댓글