結果
問題 |
No.425 ジャンケンの必勝法
|
ユーザー |
![]() |
提出日時 | 2017-04-24 15:37:12 |
言語 | C90 (gcc 12.3.0) |
結果 |
AC
|
実行時間 | 9 ms / 2,000 ms |
コード長 | 513 bytes |
コンパイル時間 | 198 ms |
コンパイル使用メモリ | 21,632 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-09-13 11:52:34 |
合計ジャッジ時間 | 897 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 18 |
コンパイルメッセージ
main.c: In function ‘run’: main.c:21:3: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 21 | scanf("%d%d",&p,&q); | ^~~~~~~~~~~~~~~~~~~
ソースコード
#include<stdio.h> double calc(int depth,int p,int q){ if(depth>=20){ return 0.5; } double h=1.0/2.0; double t=1.0/3.0; double f=1.0/100.0; if(p<=0){ return t+calc(depth+1,q,q)*t; } else if(p>=100){ return h+calc(depth+1,100-q,q)*h; } return (h+calc(depth+1,p-q,q)*h)*p*f +(t+calc(depth+1,p+q,q)*t)*(100-p)*f; } void run(void){ int p,q; scanf("%d%d",&p,&q); double ans=1.0/3.0+calc(0,p,q)/3.0; printf("%.6lf\n",ans); return; } int main(void){ run(); return 0; }