NC20272. [SCOI2009]生日快乐
描述
输入描述
包含三个整数,X Y N。
1 ≤ X,Y ≤ 10000 ; 1 ≤ N ≤ 10
输出描述
包含一个浮点数,保留6位小数。
示例1
输入:
5 5 5
输出:
1.800000
Python3 解法, 执行用时: 90ms, 内存消耗: 5000K, 提交时间: 2022-09-14 20:24:04
x, y, n = map(int, input().split()) def dfs(x, y, n): if n == 1: return max(x, y) / min(x, y) ans = float("inf") a, b = x / n, y / n for i in range(1, n // 2 + 1): ta = max(dfs(a * i, y, i), dfs(x - a * i, y, n - i)) tb = max(dfs(x, b * i, i), dfs(x, y - b * i, n - i)) ans = min(ans ,min(ta, tb)) return ans print("%.6f" % dfs(x, y, n))
C++11(clang++ 3.9) 解法, 执行用时: 36ms, 内存消耗: 504K, 提交时间: 2020-07-14 16:35:48
#include<bits/stdc++.h> using namespace std; double dfs(double x,double y,int n){ if(n==1)return max(x,y)/min(x,y); double ret=1e6; for(int i=1;i<n;++i) ret=min(ret,min(max(dfs(x/n*i,y,i),dfs(x/n*(n-i),y,n-i)),max(dfs(x,y/n*i,i),dfs(x,y/n*(n-i),n-i)))); return ret; } int main(){ double x,y;int n; cin>>x>>y>>n; printf("%.6lf",dfs(x,y,n)); }