メモ

yukicoderでゆるふわgolf

yukicoder No.65 回数の期待値の練習

問題はこちら
No.65 回数の期待値の練習 - yukicoder

問題文中の漸化式にしたがってそのまま実装

int main(){
	double e[30]={};
	int k;
	scanf("%d",&k);
	while(k--)e[k]=(e[k+1]+e[k+2]+e[k+3]+e[k+4]+e[k+5]+e[k+6])/6+1;
	printf("%f",e[0]);
	return 0;
}

要求誤差がありえないくらいゆるいので、近似式を作って埋め込みましょう

t;main(){t=scanf("%d",&t)>printf("%f",t<8?.02*t*t+.09*t+.9:t*.28+.53);}

71B
この近似式はエクセルとにらめっこしながら2時間くらい掛けて作った
これよりいい式があるかどうかは分からない

n 真値 近似値 相対誤差
1 1.00000 1.01 0.01000
2 1.16667 1.16 0.00571
3 1.36111 1.35 0.00816
4 1.58796 1.58 0.00501
5 1.85262 1.85 0.00142
6 2.16139 2.16 0.00064
7 2.52163 2.51 0.00461
8 2.77523 2.77 0.00188
9 3.04332 3.05 0.00219
10 3.32369 3.33 0.00190
11 3.61298 3.61 0.00083
12 3.90638 3.89 0.00419
13 4.19721 4.17 0.00648
14 4.47647 4.45 0.00591
15 4.76001 4.73 0.00630
16 5.04612 5.01 0.00716
17 5.33319 5.29 0.00810
18 5.61990 5.57 0.00888
19 5.90548 5.85 0.00940
20 6.19020 6.13 0.00972

ちなみに、サイコロ1回あたり平均3.5マス進めるので、kが十分大きくなれば答えはk/3.5に近づいていく