[BOJ] 25793. 초콜릿 피라미드
15 Apr 2026
Reading time ~1 minute
풀이
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int T;
long long R, C, min, a;
long long piramid, four_area;
string s = "";
cin >> T;
for (int t = 0; t < T; t++)
{
piramid = 0ll;
four_area = 0ll;
cin >> R >> C;
min = R < C ? R : C;
a = abs(R-C);
four_area = min*(min-1)*(2*min - 1)/6 + (a+1)*(min*(min-1)/2) + (min*(min+1)*(2*min+1)/6)+ (a-1)*(min*(min+1)/2);
piramid = min*(min-1)*(2*min-1)/3 + a*min*(min-1)+R*C;
s += to_string(piramid);
s += " ";
s += to_string(four_area);
s += "\n";
}
cout << s;
}
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(br.readLine());
long R, C, min, a;
long piramid, four_area;
StringBuilder sb = new StringBuilder();
for(int i = 0; i < T; i++) {
StringTokenizer st = new StringTokenizer(br.readLine().trim());
piramid = 0l;
four_area = 0l;
R = Long.parseLong(st.nextToken());
C = Long.parseLong(st.nextToken());
min = (long) Math.min(R, C);
a = (long) Math.abs(R-C);
four_area = min*(min-1)*(2*min - 1)/6 + (a+1)*(min*(min-1)/2) + (min*(min+1)*(2*min+1)/6) + (a-1)*(min*(min+1)/2);
piramid = min*(min-1)*(2*min-1)/3 + a*min*(min-1)+R*C;
sb.append(piramid);
sb.append(" ");
sb.append(four_area);
sb.append("\n");
}
bw.write(sb.toString());
bw.close();
}
}