※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 2737번 문제인 연속 합이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/2737
2737번: 연속 합
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 정수 하나로 이루어져 있다. 이 정수는 문제에서 설명한 N이며, 231보다 작다.
www.acmicpc.net
따라서 어떤 양의 정수가
글쓴이는 테스트케이스가 10000개 이하일 것이라 가정하고 아래와 같이 코드를 작성하였다.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
typedef long long ll;
int T;
ll arr[10001];
int cnt[10001];
ll psum;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> T;
for (int t = 0; t < T; t++) cin >> arr[t];
for (ll i = 2; psum < 2147483648LL; i++) {
psum += i - 1;
for (int t = 0; t < T; t++) {
ll tmp = arr[t] - psum;
if (tmp <= 0 || tmp % i) continue;
cnt[t]++;
}
}
for (int t = 0; t < T; t++) cout << cnt[t] << '\n';
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 9471 // C++] 피사노 주기 (0) | 2024.01.07 |
---|---|
[BOJ 2799 // C++] 블라인드 (1) | 2024.01.06 |
[BOJ 7117 // C++] Sevens, twos and zeros (0) | 2024.01.04 |
[BOJ 1750 // C++] 서로소의 개수 (1) | 2024.01.03 |
[BOJ 2436 // C++] 공약수 (1) | 2024.01.02 |