NC19777. 卡牌游戏
描述
输入描述
数据有多组,第一行一个整数T表示数据组数。
每组数据一行,三个整数N,M,K .
输出描述
对于每组数据,输出形如"Case #x: y",其中 x 为这组数据的编号(从1开始),y 为这组数据的答案。答案的绝对误差或相对误差在10-6以内都认为是正确的。
示例1
输入:
2 5 2 1 40 9 5
输出:
Case #1: 2.5 Case #2: 28.1146825397
C++14(g++5.4) 解法, 执行用时: 45ms, 内存消耗: 476K, 提交时间: 2018-10-02 13:45:13
#include<stdio.h> int main() { int j,t,M,N,D,i; double y,E,K; scanf("%d",&t); for(j=1;j<=t;j++) { scanf("%d%d%d",&M,&N,&D); E=0; for(i=0;i<D;i++) E=E+1.0*(M-i)/(N-i); printf("Case #%d: %.7f\n",j,E); } return 0; }
C++11(clang++ 3.9) 解法, 执行用时: 43ms, 内存消耗: 348K, 提交时间: 2018-10-02 13:32:47
#include "stdio.h" int main(){ double n,m,k,ans,t; int T,i,j; scanf("%d",&T); for(i=1;i<=T;i++){ scanf("%lf%lf%lf",&n,&m,&k); t=ans=0; while(t<k){ ans+=n/m; n--; m--; t++; } printf("Case #%d: %.6f\n",i,ans); } }
Pascal(fpc 3.0.2) 解法, 执行用时: 92ms, 内存消耗: 128K, 提交时间: 2018-10-04 08:50:33
var s:real; t,i,n,m,k,j:longint; begin readln(t); for i:=1 to t do begin read(n,m,k); s:=0; for j:=0 to k-1 do s:=s+(n-j)/(m-j); writeln('Case #',i,': ',s:0:10); end; end.
C 解法, 执行用时: 13ms, 内存消耗: 332K, 提交时间: 2023-03-05 20:45:21
#include<stdio.h> int main(){ int i,T,N,M,K,No=1; double e; scanf("%d",&T); while(T--){ e=0; scanf("%d%d%d",&N,&M,&K); for(i=0;i<K;i++) e+=1.0*(N-i)/(M-i); printf("Case #%d:%.7lf\n",No,e); No++; } }
Python3 解法, 执行用时: 1206ms, 内存消耗: 8472K, 提交时间: 2023-05-07 19:02:50
for j in range(1, int(input())+1): N, M, K = map(int, input().split()) print(f"Case #{j}: {sum([(N-i)/(M-i) for i in range(K)])}")