알고리즘 문제 해결/codeforces

[수학] codeforces 1700A (C++)

jmkimmessi 2022. 6. 30. 19:20
반응형

https://codeforces.com/problemset/problem/1700/A

 

Problem - 1700A - Codeforces

 

codeforces.com

 

문제 해결 알고리즘

 

$n \times m$ 배열이 위의 내용처럼 $a_{ij} = (i-1)m + j$이라면,

 

최소 경로는 맨위의 행과 맨 오른쪽 열의 합을 더해준 값과 같다.

 

그러므로 각각의 값을 구한 뒤 겹치는 $a_{1m}$값을 빼주면 최소 경로 값이 나온다. 

 

소스 코드

 

#include <bits/stdc++.h>
#define ll long long int
using namespace std;

int main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    int t; cin >> t;

    ll n, m, result = 0; 
    while(t--){
        result = 0;
        cin >> n >> m;

        result = m*(m+1)/2 - m;
        result += n*(n+1)/2 * m;

        cout << result << '\n';
    }
}
반응형