Open TakefumiYamamura opened 8 years ago
時間制限 : 2sec / メモリ制限 : 256MB
問題文 異なる整数が 5 個与えられます。
この中から 3 つ選んでその和で表すことの出来る整数のうち、3 番目に大きいものを出力してください。
数が5個しかないので全通り試すだけ。
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;
int main(){
vector<int> nums;
for (int i = 0; i < 5; ++i)
{
int n;
cin >> n;
nums.push_back(n);
}
vector<int> ans;
for (int i = 0; i < 1<<5; ++i)
{
int count = 0;
for (int j = 0; j < 5 ; ++j)
{
if(i >> j & 1){
count++;
}
}
if(count == 3){
int tmp = 0;
for (int j = 0; j < 5; ++j)
{
if(i >> j & 1){
tmp += nums[j];
}
}
ans.push_back(tmp);
}
}
sort(ans.begin(), ans.end(), greater<int>() );
cout << ans[2] << endl;
}
時間制限 : 2sec / メモリ制限 : 256MB
2 つの整数 N、K が与えられます。
1 以上 N 以下の整数のなかからどれか 1 つ、等確率に選ぶ機械を考えます。
その機械を 3 回動かした時、選ばれた 3 つの数の中央値が K となる確率を求めてください。
数学 D問題の割に簡単ではげた
#include <iostream>
using namespace std;
int main(){
long double n, k;
cin >> n >> k;
long double ans;
ans = (1.0 + 3 * (k - 1) + 3 * (n - k) + 6 * (k - 1) * (n - k) )/ (n * n * n);
printf("%.24Lf\n", ans );
}
http://abc028.contest.atcoder.jp/