[白俊BOJ]17425号:薬水の和
📌 リファレンス
引き渡しアルゴリズム研究に関わる問題は19週目からBellogに記録される(18週前に復習してアップロードする予定)🤗) 他の個人が回答した基準やプログラマの質問は、自分が意味があると思っている部分だけをフィルタリングしてBellogに記録します.Bellogにアップロードされていない他の質問やコードを知りたい場合は、次のGithubでさらに確認できます.👀 ご来店ありがとうございます🙏
💚 github | dianstar/Algorithm-BOJ
💚 github | dianestar/Algorithm-Programmers
17425号:約数の和|問題ショートカット
昨日解いた17427号:薬水の和2問と同じです.
入力は1つの数字だけを受信できません.
T(1<=T<=10000)個のテストケース.
17427号と同じ方法で解くと、またタイムアウトが発生します
したがって、動的プログラミングの方法は、次のとおりです.
与えられた自然数Nの範囲N=1~N=10000の全てのg(N)値を求める.
入力に応じて値を出力する方法を選択してください
引き渡しアルゴリズム研究に関わる問題は19週目からBellogに記録される(18週前に復習してアップロードする予定)🤗) 他の個人が回答した基準やプログラマの質問は、自分が意味があると思っている部分だけをフィルタリングしてBellogに記録します.Bellogにアップロードされていない他の質問やコードを知りたい場合は、次のGithubでさらに確認できます.👀 ご来店ありがとうございます🙏
💚 github | dianstar/Algorithm-BOJ
💚 github | dianestar/Algorithm-Programmers
code.plus問題セット:テスト符号化の準備-基礎|数学
17425号:約数の和|問題ショートカット
回答(2022年02月3日THU)💻)
解の核心
昨日解いた17427号:薬水の和2問と同じです.
入力は1つの数字だけを受信できません.
T(1<=T<=10000)個のテストケース.
17427号と同じ方法で解くと、またタイムアウトが発生します
したがって、動的プログラミングの方法は、次のとおりです.
与えられた自然数Nの範囲N=1~N=10000の全てのg(N)値を求める.
入力に応じて値を出力する方法を選択してください
🔽 コード(C+)
#include <iostream>
using namespace std;
#define MAX_NUM 1000001
int arr[MAX_NUM]; // arr[A]: f(A)의 값, 즉 A의 모든 약수를 더한 값
long long sum[MAX_NUM]; // sum[x]: g(x)의 값, 즉 x보다 작거나 같은 모든 자연수 y의 f(y)값을 더한 값
int main() {
for (int i=1; i<MAX_NUM; i++) {
for (int j=1; i*j<MAX_NUM; j++) {
arr[i*j] += i;
}
}
sum[1] = arr[1];
for (int i=2; i<MAX_NUM; i++) {
sum[i] = sum[i-1] + arr[i];
}
int T;
scanf("%d", &T);
int N;
for (int i=0; i<T; i++) {
scanf("%d", &N);
printf("%lld\n", sum[N]);
}
return 0;
}
Reference
この問題について([白俊BOJ]17425号:薬水の和), 我々は、より多くの情報をここで見つけました https://velog.io/@dianestar/백준BOJ-17425번-약수의합テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol