#include <iostream>
#include <queue>
using namespace std;
int main() {
int aa, bb;
cin >> aa >> bb;
int arr[1001];
int index = 1;
for (int i = 1; index <= 1000; i++) {
for (int j = 0; j < i; j++) {
if (index > 1000) break;
arr[index++] = i;
}
}
int total = 0;
for (int i = aa; i <= bb; i++) {
total += arr[i];
}
cout << total;
return 0;
}
처음에는 아래와 같이 제출했는데
#include <iostream>
#include <queue>
using namespace std;
int main() {
int aa, bb;
cin >> aa >> bb;
int arr[1001];
int index = 1;
for (int i = 1; index <= 1000; i++) {
for (int j = 0; j < i; j++) {
arr[index++] = i;
}
}
int total = 0;
for (int i = aa; i <= bb; i++) {
total += arr[i];
}
cout << total;
return 0;
}
배열의 인덱스를 초과해도 오류가 나지 않아서 바꾸지도 않은 a와 b가 45로 바뀌는 신기한 경험을 했다. 그래서 변수 이름을 aa, bb로 바꾸기까지 했다. 그런데 index가 1000을 넘어서도 안쪽 for문이 계속 돌면서 배열이 할당된 메모리를 넘어서도 계속 쓰기 때문에 배열 다음에 할당된 a와 b를 건드리는 것이었다.
#include <iostream>
using namespace std;
int main() {
int t;
cin >> t;
for (int i = 0; i < t; i++) {
int v, e;
cin >> v >> e;
cout << e - v + 2 << '\n';
}
return 0;
}