FOJ Problem 2257 Saya的小熊饼干
Time Limit: 1000 mSec Memory Limit : 32768 KB
Problem Description
Saya最近喜欢上了小熊饼干,但是他有非常严重的选择困难症,当然面对这一堆小熊饼干的时候,想起了一句至理名言“犹豫不决么? 那就来RAND()一下吧!”。
于是,Saya把小熊饼干排成了一个N*M的矩阵,每个位置上都放着一块小熊饼干。每当他想吃小熊饼干的时候,他就运行一下代码。(random()为生成一个任意正整数)。
x1=random() mod N+1;
y1=random() mod M+1;
x2=random() mod N+1;
y2=random() mod M+1;
然后将以(x1, y1),(x2, y2)为两个顶点的,四条边平行于边界的一个子矩形内的小熊饼干全部吃掉(两个点的连线为矩形的对角线,如果x1=x2或者y1=y2,则认为矩形的长度或宽度为1)。显然,如果某个位置上的小熊饼干已经被吃掉了,那Saya就什么都吃不到了。
在这题中,我们假定random()函数非常完美,得到每个格子的概率相等。
请你帮忙算一算,K次之内她期望可以吃到块小熊饼干?
Input
包含多组测试数据。
一行内包括三个正整数K,N,M。
0≤K≤10000,1≤N,M≤1000
Output
一个整数,K次之内期望可以吃到的小熊饼干块数(四舍五入精确到整数)。
Sample Input
Sample Output
Hint
对于样例简单的解释是这样的:在3*3的格子里取子矩形,取到1*1的方案数为9,取到1*2或2*1的方案数为24,取到1*3或3*1的方案数为12,取到2*2的方案数为16,取到2*3或3*2的方案数为16,取到3*3的方案数为4结果约为(1*9+2*24+3*12+4*16+6*16+9*4) / (9*9) = 3.5679,四舍五入后得4。
PS:最后Saya直接令x1=1,y1=1,x2=n,y2=m。
思路:一块一块饼干考虑过去,设事件Xij:坐标在(x,y)处的饼干被吃掉。则每块饼干被吃掉这些事件之间相互独立,则设事件X:n,m矩形内所有的饼干被吃掉,E(X)=ΣE(Xij),1<=i<=n,1<=j<=m,那么只要求出每一个E(Xij),最后累加即可。
对于E(Xij)=1*P(Xij),而P(Xij)=(2x(n-x+1)-1)/(n^2)*(2y(n-y+1)-1)/m^2;
AC代码:
#define _CRT_SECURE_NO_DEPRECATE
#include <iostream>
#include<cstdio>
#include<vector>
#include<queue>
#include<cstring>
#include<string>
#include<stack>
using namespace std;
#define INF 0x3f3f3f3f
int k,n,m;
double mod_pow(double x,int k) {
double res = ;
while (k) {
if (k & )res = res*x;
x = x*x;
k >>= ;
}
return res;
} int main() {
while (scanf("%d%d%d",&k,&n,&m)!=EOF) {
double ans = ;
for (int x= ; x <= n;x++) {
for (int y = ; y <= m;y++) {
double Pxy = (2.0*x*(n - x + ) - )/(n*n)*(2.0*y*(m-y+)-) /(m*m);//!计算式中至少一个double型
ans += - mod_pow(- Pxy, k);
}
}
printf("%.0f\n",ans);
} return ;
}
FOJ Problem 2257 Saya的小熊饼干的更多相关文章
- fzu 2257 saya的小熊饼干
https://vjudge.net/problem/FZU-2257 题意:略 思路: 看题解补的题.正难则反的思想求概率. 首先,由于各维数之间是独立的.所以以x为例.首先,计算可以取到(i,j) ...
- FOJ ——Problem 1759 Super A^B mod C
Problem 1759 Super A^B mod C Accept: 1368 Submit: 4639Time Limit: 1000 mSec Memory Limit : 32 ...
- FOJ Problem 1016 无归之室
Problem 1016 无归之室 Accept: 926 Submit: 7502Time Limit: 1000 mSec Memory Limit : 32768 KB Prob ...
- FOJ Problem 1015 土地划分
Problem 1015 土地划分 Accept: 823 Submit: 1956Time Limit: 1000 mSec Memory Limit : 32768 KB Probl ...
- foj Problem 2107 Hua Rong Dao
Problem 2107 Hua Rong Dao Accept: 503 Submit: 1054Time Limit: 1000 mSec Memory Limit : 32768 K ...
- foj Problem 2282 Wand
Problem 2282 Wand Accept: 432 Submit: 1537Time Limit: 1000 mSec Memory Limit : 262144 KB Prob ...
- FOJ Problem 2273 Triangles
Problem 2273 Triangles Accept: 201 Submit: 661Time Limit: 1000 mSec Memory Limit : 262144 KB P ...
- foj Problem 2275 Game
Problem D Game Accept: 145 Submit: 844Time Limit: 1000 mSec Memory Limit : 262144 KB Problem D ...
- foj Problem 2283 Tic-Tac-Toe
Prob ...
随机推荐
- 用简单的语言描述C++ 是什么?
用简单的语言描述C++ 是什么? 答:C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛.C++支持多种编程范式 --面向对象编程.泛型编程和过程化编程. 其编程领域众广,常用于系统开发,引 ...
- 2019.05.26 周日--《阿里巴巴 Java 开发手册》精华摘要
一.写在开头 Java作为一个编程界最流行的语言之一,有着很强的生命力.代码的编写规范也是不容忽视的,今天,我就把自己阅读的国内的互联网巨头阿里巴巴的<阿里巴巴 Java 开发手册>一些精 ...
- Bootstrap历练实例:标签修饰
您可以使用修饰的 class label-default.label-primary.label-success.label-info.label-warning.label-danger 来改变标签 ...
- C#访问数组元素
在C#中,使用索引来访问数组元素.索引必须是一个整型值. 在数组中,每一个维度的索引从0开始. 一.访问一维数组元素 int[] array = {1,2,3,4,5,6,7,8,9,10}; // ...
- NSOperation、NSOperationQueue
NSOperation.NSOperationQueue NSOperation 和 NSOperationQueue 配合使用也能实现多线程. NSOperation 继承于 NSObject,是一 ...
- C# 使用Epplus导出Excel [5]:样式
C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...
- How to Install Zabbix Server on Centos6.7
Prerequisite Environment First you must use your Subscription Manager to enable SCL: [root@fileserve ...
- 使用 Python 编写登陆接口
# 使用 Python 编写登陆接口# Create Date: 2017.10.31 Tuesday# Author: Eric Zhao# -*- coding:utf-8 -*-'''编写登陆接 ...
- GoF23种设计模式之行为型模式之迭代器模式
一.概述 给定一种语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子.二.适用性1.当访问一个聚合对象的内容而无需暴露它的内部表示的时候.2.当对聚合对象的多 ...
- POJ:1328-Radar Installation
Radar Installation Time Limit: 1000MS Memory Limit: 10000K Description Assume the coasting is an inf ...