1011 : Fly me to the Alpha Centauri
何の問題ですか。
数学の問題だけです.
奥応?
この問題は全部で3回挑戦したことがある.このうち2番は試さずに投げ出し、成功した.
いったい何の問題なのか.
問題から手がかりを探る
初めての試みでは、ピラミッド作りに執着した様子、つまり、1、2、3、2、1の姿は、近づくことさえできなかった.
2回目の試みではy−xと操作回数の関係を見出したが,整数の観点から考慮した問題を誤った範囲に解釈しすぎ,問題に適したモデルが見つからなかった.
だから何の関係なの?
y−xが平方数である場合、動作回数の最大値は2*sqrt(y−x)−1で決定される.
任意の距離Dが与えられると、最小オペランドM(D)は、である.
この問題は全部で3回挑戦したことがある.このうち2番は試さずに投げ出し、成功した.
いったい何の問題なのか.
問題から手がかりを探る
初めての試みでは、ピラミッド作りに執着した様子、つまり、1、2、3、2、1の姿は、近づくことさえできなかった.
2回目の試みではy−xと操作回数の関係を見出したが,整数の観点から考慮した問題を誤った範囲に解釈しすぎ,問題に適したモデルが見つからなかった.
だから何の関係なの?
y−xが平方数である場合、動作回数の最大値は2*sqrt(y−x)−1で決定される.
任意の距離Dが与えられると、最小オペランドM(D)は、である.
様子で決める.
パスワードをくれ
これは私のコードです.#include <stdio.h>
#include <math.h>
int main() {
unsigned T,x,y,a,d,i=0;
scanf("%u",&T);
for(;i<T;i++) {
scanf("%d%d",&x,&y);
d=y-x;
a=(unsigned)floor(sqrt((double)d));
if(a*a==d) printf("%u\n",2*a-1);
else if(a*a<d&&d<=a*a+a) printf("%u\n",2*a);
else if(a*a+a<d<=(a+1)*(a+1)) printf("%u\n",2*a+1);
}
}
他の人はどうやって作ったの?
一番印象的なのは、床(4*d+1)が効いていることです.掘り出したってint main() {
long long int a,b,c,d;
scanf("%lld", &a);
for (long long int i = 0; i < a; i++) {
scanf("%lld %lld", &b, &c);
d = c - b - 1;
printf("%d\n", (int)sqrt(4 * d + 1));
}
}
tapris解釈
#include <stdio.h>
#include <math.h>
int main() {
unsigned T,x,y,a,d,i=0;
scanf("%u",&T);
for(;i<T;i++) {
scanf("%d%d",&x,&y);
d=y-x;
a=(unsigned)floor(sqrt((double)d));
if(a*a==d) printf("%u\n",2*a-1);
else if(a*a<d&&d<=a*a+a) printf("%u\n",2*a);
else if(a*a+a<d<=(a+1)*(a+1)) printf("%u\n",2*a+1);
}
}
一番印象的なのは、床(4*d+1)が効いていることです.掘り出したって
int main() {
long long int a,b,c,d;
scanf("%lld", &a);
for (long long int i = 0; i < a; i++) {
scanf("%lld %lld", &b, &c);
d = c - b - 1;
printf("%d\n", (int)sqrt(4 * d + 1));
}
}
tapris解釈Reference
この問題について(1011 : Fly me to the Alpha Centauri), 我々は、より多くの情報をここで見つけました https://velog.io/@qoo0302/1011-Fly-me-to-the-Alpha-Centauriテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol