結果
| 問題 |
No.67 よくある棒を切る問題 (1)
|
| コンテスト | |
| ユーザー |
kou6839
|
| 提出日時 | 2016-04-13 17:20:05 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 359 ms / 5,000 ms |
| コード長 | 2,838 bytes |
| コンパイル時間 | 1,180 ms |
| コンパイル使用メモリ | 110,572 KB |
| 実行使用メモリ | 10,572 KB |
| 最終ジャッジ日時 | 2025-03-03 10:34:19 |
| 合計ジャッジ時間 | 10,242 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 30 |
ソースコード
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<ctime>
#include<cctype>
#include<climits>
#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<set>
#include<list>
#include<queue>
#include<fstream>
#include<deque>
#include<algorithm>
#include<numeric>
#include<utility>
#include<complex>
#include<memory>
#include<functional>
#include <iomanip>
using namespace std;
#define all(g) (g).begin(),(g).end()
#define REP(i, x, n) for(int i = x; i < n; i++)
#define rep(i,n) REP(i,0,n)
#define F(i,j,k) fill(i[0],i[0]+j*j,k)
#define P(p) cout<<(p)<<endl;
#define EXIST(s,e) ((s).find(e)!=(s).end())
#define INF (1<<28)
#define pb push_back
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<long long> vl;
typedef vector<double> vd;
typedef pair<int, int> pii;
typedef pair<long, long> pll;
typedef long long ll;
int gcd(int a, int b) {
if (b == 0) return a;
return gcd(b, a % b);
}
int lcm(int a, int b) {
return a / gcd(a, b) * b;
}
int extgcd(int a, int b, int& x, int& y) {
int d = a;
if (b != 0) {
d = extgcd(b, a % b, y, x);
y -= (a / b) * x;
}
else {
x = 1; y = 0;
}
return d;
}
bool is_prime(ll n) {
if (n == 2) return true;
if (n % 2 == 0) return false;
for (ll i = 3; i * i <= n; i+=2) {
if (n % i == 0) return false;
}
return n != 1;
}
vector<int> divisor(int n) {
vector<int> res;
for (int i = 1; i * i <= n; i++) {
if (n % i == 0) {
res.pb(i);
if (i != n / i) res.pb(n / i);
}
}
return res;
}
map<int, int> prime_factor(int n) {
map<int, int> res;
for (int i = 2; i * i <= n; i++) {
while (n % i == 0) {
++res[i];
n /= i;
}
}
if (n != 1) res[n] = 1;
return res;
}
const int MAX_N = 10000000;
int prime[MAX_N];
bool memo[MAX_N + 1];
long long MOD = 1000000007ll;
ll mod_pow(ll x, ll n, ll mod) {
if (n == 0) return 1;
ll res = mod_pow(x * x % mod, n / 2, mod);
if (n & 1) res = res * x % mod;
return res;
}
vector<int> G[100005];
int dp1[1000005], dp2[100005];
void dfs(int p, int x) {
vi child;
for (int v : G[x]) {
if (v != p) child.push_back(v);
}
for (int v : child)dfs(x, v);
ll prod = 1;
for (int v : child) prod = prod*dp1[v] % MOD;
dp2[x] = prod;
ll prod2 = 1;
for (int v : child) prod2 = prod2*dp2[v] % MOD;
dp1[x] = (dp2[x] + prod2) % MOD;
}
int trans(int n) {
int ret = 0;
while(n > 0) {
ret += (n % 10)*(n % 10);
n /= 10;
}
return ret;
}
int N;
vector<int> L;
ll K;
bool check(double a) {
ll count = 0;
for (int b : L) {
count += b / a;
}
return count >= K;
}
int main() {
cin >> N;
rep(i, N) {
int a;
cin >> a;
L.pb(a);
}
cin >> K;
double min = 0, max = 1000000010;
rep(i, 200) {
double mid = (min + max) / 2;
if (check(mid)) {
min = mid;
}
else {
max = mid;
}
}
cout << fixed << setprecision(10) << min << endl;;
return 0;
}
kou6839