大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
Taiko taiko
Description
拆拆超级喜欢太鼓达人(赛后大家可自行百度规则),玩久了也对积分规则产生了兴趣,理论上连击数越多,分数增加的越快,而且还配合着击打准确度有相应的计算规则,拆拆觉得这些规则太复杂了,于是把规则自行简化了下:
对于一段击打序列,我们假设Y为打中,N为未打中 (没有良可之分了)
我们视连续的n次击中为n连击 相应的分数为 1+2+3+。。。+n
例如序列YNNYYYNYN的总分数为1+1+2+3+1=8
当然 击中是有概率的 我们假定概率始终为P(0<=P<=1)拆拆的击中概率很高的恩恩=w=
于是现在拆拆想知道对于长度为L的序列 击中概率为P时 获得积分的期望是多少
Input
一个整数T(表示T组数据)
接下来的T组数据
接下来T行 每行一个整数L 一个浮点数P
数据范围
1<=T<=1000
1<=L<=1000
0<=P<=1
Output
对于每组数据输出一行1个6位小数 即题目描述的期望
Sample Input
2 2 0.9 3 0.5
Sample Output
2.610000 2.125000
code:
#include<stdio.h>
int main()
{
int t,n,a;
double ans,p;
scanf("%d",&t);
while(t--)
{
scanf("%d%lf",&n,&p);
a=1;
double tem=0;
while(n--)
{
tem=(tem+a)*p;
a++;
}
printf("%.6lf\n",tem);
}
return 0;
}
硬币水题II
64-bit integer IO format:
%lld Java class name:
Main
小胖有一个正反面不对称的硬币。如果抛一次这个硬币,它的正面朝上的概率为p,反面朝上的概率为1-p。现在,小胖想用这个硬币来产生等概率的决策(50%对50%)。当然,只抛一次是不行的。小胖的策略是这样的:每一次决策,需要抛硬币两次,如果都是正面朝上或者都是反面朝上,那么就重新再做一次决策;如果是一正一反,那么如果第一次是正面朝上,就说抛了正面,如果第一次是反面朝上,那么就视为抛了反面。这样,就能得到一个公平的决策了。
现在问题是,给定一个p,小胖平均要抛多少次,才能得到一个决策呢(即不用再抛了)?
Input
第一行包含一个整数N(N<=100),表示测试数据的个数。
接下来包括N行,每行一个测试数据,包括一个3位的浮点数p(0<p<1)。
Output
对每一个测试数据,输出一行,包括一个浮点数,表示小胖抛硬币的平均次数。
结果保留两位小数。
Sample Input
3 0.500 0.800 0.300
Sample Output
4.00 6.25 4.76
code:1/(p*(1-p))是得到“一正或一反”决策的次数
思路:推出公式 2*(1/(p*(1-p)*2))2*p*(1-p)是得到“一正一反”的概率,它的倒数就是得到一正一反平均要用的次数,前面乘2是因为每次决策要抛两次硬币
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int main()
{
int cas,i,j;
double p,n,m;
scanf("%d",&cas);
while(cas--)
{
scanf("%lf",&p);
m = (1- p) * p;
n = 1/m;
printf("%.2lf\n",n);
}
return 0;
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/200702.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...