[SWA] 8771. 덧셈문제

김민석·2021년 2월 22일
0

SW Expert Academy

목록 보기
1/5

8771.덧셈문제

주어진 A와 B 사이의 숫자 중 N개의 숫자를 선택해 더하여 나올 수 있는 경우의 수를 구하는 문제이다.

A와 B를 꼭 포함하여하 하며 A는 B보다 작은 수 여야 한다.

문제 해결 아이디어

A와 B를 꼭 포함하여야 하기 때문에 추가적으로 N-2개의 숫자를 선택해야 한다.

선택할 수 있는 수 중 가장 작은 수는 A만으로 구성된 숫자이다.
(A + B + Ax(N-2))

선택할 수 있는 수 중 가장 큰 수는 B만으로 구성된 숫자이다.
(A + B + Bx(N-2))

즉 모든 경우의 수는 위에서 구한 두 수 사이의 정수 개수가 되는 것이다.

코드

#include<iostream>
 
using namespace std;
 
int main(int argc, char** argv)
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
     
    int test_case;
    int T;
    cin>>T;
    for(test_case = 1; test_case <= T; ++test_case)
    {
        long long int n,a,b;
        cin >> n >> a >> b;
        if(b < a || n==1&&a!=b)
            cout << "#" << test_case << " " << 0 << "\n";
        else
        {
            cout << "#" << test_case << " " << b*(n-2) - a*(n-2) + 1 << "\n";
        }
    }
    return 0;
}

출처 : https://swexpertacademy.com/main/code/problem/problemDetail.do

profile
김민석의 학습 정리 블로그

0개의 댓글