結果
問題 |
No.425 ジャンケンの必勝法
|
ユーザー |
![]() |
提出日時 | 2017-04-24 15:38:52 |
言語 | C90 (gcc 12.3.0) |
結果 |
AC
|
実行時間 | 3 ms / 2,000 ms |
コード長 | 524 bytes |
コンパイル時間 | 297 ms |
コンパイル使用メモリ | 22,016 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-09-13 11:53:34 |
合計ジャッジ時間 | 1,127 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
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>=18){ return (0.5+2.0/3.0)/2; } 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; }