BD3. 钓鱼比赛
描述
ss请cc来家里钓鱼,鱼塘可划分为n*m的格子,每个格子有不同的概率钓上鱼,cc一直在坐标(x,y)的格子钓鱼,而ss每分钟随机钓一个格子。问t分钟后他们谁至少钓到一条鱼的概率大?为多少?输入描述
对于每组数据,第一行五个整数n,m,x,y,t(1≤n,m,t≤1000,1≤x≤n,1≤y≤m);输出描述
输出两行。第一行为概率大的人的名字(cc/ss/equal),第二行为这个概率(保留2位小数)示例1
输入:
2 2 1 1 1 0.2 0.1 0.1 0.4
输出:
equal 0.20
C++ 解法, 执行用时: 20ms, 内存消耗: 8420KB, 提交时间: 2017-05-04
# include<stdio.h> # include<math.h> # include <stdlib.h> # include <string.h> # include <iostream> using namespace std; int main () { int n,m,x,y,t; while(~scanf("%d%d%d%d%d",&n,&m,&x,&y,&t)) { double arr[n][m]; double pss=0; double pcc=0; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { scanf("%lf",&arr[i][j]); pss+=arr[i][j]; } } pss/=(n*m); pcc=arr[x-1][y-1]; if(pss<pcc) { printf("cc\n"); printf("%.2lf\n",1-pow(1-pcc,t)); } else if(pss>pcc) { printf("ss\n"); printf("%.2lf\n",1-pow(1-pss,t)); } else { printf("equal\n"); printf("%.2lf\n",1-pow(1-pss,t)); } } return 0; }
C++ 解法, 执行用时: 20ms, 内存消耗: 8420KB, 提交时间: 2017-03-27
#include <stdio.h> #include <math.h> int main(void) { int n,m,x,y,t; while(scanf("%d %d %d %d %d",&n,&m,&x,&y,&t)!=EOF) { double fish[n][m]; int p,q; double pcc,pss; double count1,count2; count1=count2=0; for(p=0;p<n;p++) for(q=0;q<m;q++) { scanf( "%lf",&fish[p][q]); count2+=fish[p][q]; } pss=count2/(n*m); pcc=fish[x-1][y-1]; if(pss-pcc>0) { puts("ss"); printf("%.2lf\n",1-pow(1-pss,t)); } else if(pss-pcc<0) { puts("cc"); printf("%.2lf\n",1-pow(1-pcc,t)); } else { puts("equal"); printf("%.2lf\n",1-pow(1-pss,t)); } } return 0; }
C++ 解法, 执行用时: 20ms, 内存消耗: 8420KB, 提交时间: 2016-09-01
#include <cstdio> #include <cmath> #define eps 1e-8 int main(){ int n,m,x,y,t; double a[1001][1001],sum; while(scanf("%d%d%d%d%d",&n,&m,&x,&y,&t)!=EOF){ x--,y--; sum=0; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ scanf("%lf",&a[i][j]); sum+=a[i][j]; } } //printf("%lf %lf\n",sum,n*m*a[x][y]); if(fabs(n*m*a[x][y]-sum)<=eps){ puts("equal"); printf("%.2lf\n",1-pow(1-a[x][y],t)); } else if(n*m*a[x][y]>eps+sum){ puts("cc"); printf("%.2lf\n",1-pow(1-a[x][y],t)); } else{ puts("ss"); printf("%.2lf\n",1-pow(1-sum/n/m,t)); } } }
C++ 解法, 执行用时: 20ms, 内存消耗: 8460KB, 提交时间: 2017-04-28
#include<stdio.h> #include<math.h> int main() { int n,m,x,y,t; while(scanf("%d%d%d%d%d",&n,&m,&x,&y,&t)!=EOF) { double cc=0.0,ss=0.0; double tmp; for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) { scanf("%lf",&tmp); if(i==x&&j==y) cc=1-tmp; ss+=tmp; } } ss=1-ss/(n*m); cc=1-pow(cc,t); ss=1-pow(ss,t); // printf("%f\t%f\n",ss,cc); if(cc==ss) { printf("equal\n%.2f\n",cc); } else if(ss>cc) { printf("ss\n%.2f\n",ss); } else { printf("cc\n%.2f\n",cc); } } return 0; }
C++ 解法, 执行用时: 20ms, 内存消耗: 8460KB, 提交时间: 2017-03-16
#include <cstdio> #include <math.h> using namespace std; int main(void) { int n, m, x, y, t; float p; while(~scanf("%d%d%d%d%d", &n, &m, &x, &y, &t)){ float sum1 = 0, sum2 = 0, p2=0; for(int i = 1; i <= n; i++){ for(int j = 1; j <= m; j++){ scanf("%f", &p); sum1 += p; if(x == i && y == j) p2 = p; } } sum1 = 1 - pow(1-sum1/(float)(m*n), t); sum2 = 1 - pow(1-p2, t); if(sum2 == sum1) printf("equal\n%.2f\n", sum2); else if(sum1 > sum2) printf("ss\n%.2f\n", sum1); else printf("cc\n%.2f\n", sum2); } return 0; }