注意
・AtCoderのabc306_B - Base 2のネタバレあり。
学んだこと
・浮動小数点数とは
・pow関数
・累乗(power)とべき乗(exponentiation)
ACしたコード
#include <stdio.h>
#include <math.h>
int main(void)
{
int a[64];
unsigned long long sum = 0;
unsigned long long total = 0;
for (int i = 0; i < 64; i++)
{
scanf("%d", &a[i]);
// printf("%d ", a[i]);
if(a[i] == 1){
// pow関数の結果をunsigned long longの型に代入したら浮動小数点数を整数にできた!
sum = pow(2, i);
// printf("sum = %llu\n", sum);
total += sum;
// printf("total = %llu\n", total);
}
}
printf("%llu\n", total);
return 0;
}
浮動小数点数とは
chatGPTに聞いてみた
浮動小数点数は、コンピュータで実数(小数点を持つ数)を表現する方法の一つです。これは、大きな数や小さな数をコンピュータで扱えるようにするための仕組みです。
想像してみてください。数を書くための紙には、一定のスペースしかありません。だから、とても大きな数や小さな数を正確に書くことは難しいですよね。浮動小数点数は、その紙のスペースを有効に使うための工夫です。
浮動小数点数では、数を2つの部分に分けます。一つ目の部分は「仮数部」といい、小数点以下の数字を表します。そして、二つ目の部分は「指数部」といい、小数点の位置を表します。
例えば、10000という数を浮動小数点数で表すとき、仮数部には「1」と書き、指数部には「4」と書きます。これは、「1を小数点を使って4つ右に動かす」という意味です。
このようにすることで、とても大きな数や小さな数を表現することができます。でも、少しの間違いが生じるかもしれません。それは、浮動小数点数で表現できる数には限りがあるからです。
だから、浮動小数点数を使うときは、数が正確に表現されているか確認する必要があります。特に、計算をするときには、正しい答えを得るために注意が必要です。
簡単に言うと、浮動小数点数は、コンピュータで大きな数や小さな数を表現する方法で、紙のスペースを有効に使う工夫です。でも、正確な表現には限りがあるので、計算するときは注意が必要です。
pow関数
・累乗(power)を短縮した表記。
累乗(power)とべき乗(exponentiation)
・0乗は1
・累乗の指数は正の数
・べき乗の指数は複素数と呼ばれているけど今は正の数と正の数以外も指定できると覚えておく。
・累乗とべき乗の計算方法は同じで、基数(底数)を指数の回数だけ繰り返し掛け合わせる。