본문 바로가기

백준 C++

[백준/C++] 10093 : 숫자

   문제   

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

 

   입력   

두 정수 A와 B가 주어진다.

 

   출력   

첫째 줄에 두 수 사이에 있는 수의 개수를 출력한다.

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

 

   서브태스크   

 

   예제   

 


   코드   

#include <bits/stdc++.h>
using namespace std;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	long long a, b;
    
	cin >> a >> b;
    
	if (a > b) swap(a, b);
	if (a == b) cout << 0;
	else {
		cout << b - a - 1 << "\n";
		for (long long i = a + 1; i < b; i++) cout << i << " ";
	}
}

 

두 수 a, b를 입력받은 후, 항상 b에 a보다 크거나 같은 값이 올 수 있도록 swap 함수를 사용한다.

( 편의상 #include <bits/stdc++.h>를 사용했지만 swap함수는 <algorithm> 헤더에 포함되어있다.)

만약 두 수 a와 b가 같다면 0을 출력하고, 같지 않다면 두 수 사이에 있는 수의 개수와 그 숫자들을 차례로 출력한다.

 

서브 태스크에 A, B 범위의 최댓값이 10^15라고 되어있기 때문에 변수 a, b의 자료형을 int가 아닌 long long으로 사용해야한다는 점을 조심하자!

 

 

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

10093번: 숫자

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

www.acmicpc.net

 

'백준 C++' 카테고리의 다른 글

[백준/C++] 10808 : 알파벳 개수  (0) 2022.10.27