RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
R00673

바닥의 무게중심

Diamond II 다이아몬드 II
난이도
5s
시간 제한
256MB
메모리 제한
0
맞았습니다!!
0
제출 수
0.0%
정답률
레이팅

의견: 0

설명

음이 아닌 정수 \(n, m, a, b\)가 주어진다 (\(m \ge 1\)). 다음 두 값을 구하라.

$$ A = \sum_{i=0}^{n-1} \left\lfloor \frac{a \cdot i + b}{m} \right\rfloor $$

$$ B = \sum_{i=0}^{n-1} i \cdot \left\lfloor \frac{a \cdot i + b}{m} \right\rfloor $$

여기서 \(\lfloor x \rfloor\)\(x\) 이하의 최대 정수를 뜻한다.

\(T\)개의 질의가 주어지며, 각 질의마다 \((n, m, a, b)\)가 독립적으로 주어진다. \(A\)\(B\)는 매우 커질 수 있으므로 각각을 \(998244353\)으로 나눈 나머지로 출력한다.

\(n\)이 최대 \(10^9\)에 달하므로 \(i\)를 일일이 순회하는 방법으로는 제한 시간 안에 풀 수 없다.

제약

\(1 \le T \le 10^5\)

\(0 \le n \le 10^9\)

\(1 \le m \le 10^9\)

\(0 \le a, b \le 10^9\)

입력 형식

첫 줄에 질의의 수 \(T\)가 주어진다.

이어지는 \(T\)개의 줄에 각각 네 정수 \(n\), \(m\), \(a\), \(b\)가 공백으로 구분되어 주어진다.

출력 형식

각 질의마다 한 줄에 두 정수 \(A \bmod 998244353\)\(B \bmod 998244353\) 를 공백으로 구분하여 출력한다.

예제 1
입력
3
5 3 2 1
4 2 3 0
1 1 0 0
출력
7 21
8 19
0 0
설명

첫 질의 n=5,m=3,a=2,b=1: floor((2i+1)/3) = [0,1,1,2,3] (i=0..4). A=0+1+1+2+3=7, B=00+11+12+23+3*4=0+1+2+6+12=21.
둘째 질의 n=4,m=2,a=3,b=0: floor(3i/2)=[0,1,3,4], A=8, B=0+1+6+12=19.
셋째 질의 n=1: i=0만 존재, floor(0)=0, A=0, B=0.

예제 2
입력
2
0 7 5 3
10 4 4 4
출력
0 0
55 330
설명

첫 질의 n=0: 합이 없으므로 A=0, B=0.
둘째 질의 n=10,m=4,a=4,b=4: floor((4i+4)/4)=floor(i+1)=i+1 = [1,2,...,10]. A=55, B= sum i*(i+1) = 0+2+6+12+20+30+42+56+72+90 = 330.

문제 정보

riseoj 작성

출처 Original

평가 및 의견

바닥의 무게중심

개요
출제자 난이도 Diamond II 다이아몬드 II 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

바닥의 무게중심

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8