[伯俊C++1292楽解答
題名は易しい問題です.
東昊は来年小学校に入学する.だから東昊のお母さんはまず数学を勉強するために、やりやすい問題を東昊にあげました.
この問題は以下の通りです.1回2回3回このように1 2 2 3 4 4 4 5このような数列を生成し,ある区間を与え,すなわちその区間の和を求める.
しかし、東浩は今、もっと難しい問題を解決するのに忙しいので、東浩を助けましょう.
第1行は、区間の開始および終了を表す整数A,B(1≦A≦B≦1000)を与える.つまり、数列の中で、AからBまで和を求めればいいのです.
1行目は区間に属する数値和を出力します.
https://www.acmicpc.net/problem/1292
なかなか解けない
ここでは、区間統合を先に行う必要があるため、どのようなリストを書くかを見てみましょう.
インデックスはアクセスしやすく、一方向挿入のみを行います.
vectorはqueueやdequeよりも効率的です.
質問する
東昊は来年小学校に入学する.だから東昊のお母さんはまず数学を勉強するために、やりやすい問題を東昊にあげました.
この問題は以下の通りです.1回2回3回このように1 2 2 3 4 4 4 5このような数列を生成し,ある区間を与え,すなわちその区間の和を求める.
しかし、東浩は今、もっと難しい問題を解決するのに忙しいので、東浩を助けましょう.
入力
第1行は、区間の開始および終了を表す整数A,B(1≦A≦B≦1000)を与える.つまり、数列の中で、AからBまで和を求めればいいのです.
しゅつりょく
1行目は区間に属する数値和を出力します.
https://www.acmicpc.net/problem/1292
なかなか解けない
ここでは、区間統合を先に行う必要があるため、どのようなリストを書くかを見てみましょう.
インデックスはアクセスしやすく、一方向挿入のみを行います.
vectorはqueueやdequeよりも効率的です.
#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
int main(void) {
int A, B;
scanf("%d%d", &A, &B);
int k = 1;
std::vector<int> seq;
while (seq.size() < 1000) { //원소갯수가 1000미만일때만
for (int i = 0; i < k; i++) //정수 k를 k개만큼 넣는다.
seq.push_back(k); //뒤로넣어야 front부터 오름차순정렬됨
k += 1;
}
int sum = 0;
for (int i = A-1; i <= B-1; i++)
sum += seq[i];
printf("%d", sum);
return 0;
}
Reference
この問題について([伯俊C++1292楽解答), 我々は、より多くの情報をここで見つけました https://velog.io/@cldhfleks2/1292テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol