はい。
AtCoder Beginner Contest 028
今回は難易度緩いので?
A - テスト評価
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<n;++i)
#define per(i,n) for(int i=n-1;i>=0;--i)
#define sc1(a) scanf("%d",&a)
#define sc2(a,b) scanf("%d %d",&a,&b)
#define sc3(a,b,c) scanf("%d %d %d",&a,&b,&c)
#define sl1(a) scanf("%lld",&a)
#define sl2(a,b) scanf("%lld %lld",&a,&b)
#define sl3(a,b,c) scanf("%lld %lld %lld",&a,&b,&c)
#define PI 3.1415926535897932
#define ll long long
#define print(a) cout << a << endl
int souwa(int a) {return (1+a)*a/2;}
int lcm(int a,int b) { return a*b/__gcd(a,b); }
bool sankaku(int a,int b,int c) {vector <int> t={a,b,c};sort(t.begin(),t.end()); return t.at(0)+t.at(1)>t.at(2);};
int main(){
int mod=1000000007;
int n,m,x,y,cnt=0,ans=0;
string s,t;
cin >> n;
if(n<60) print("Bad");
else if(n<90) print("Good");
else if(n<100) print("Great");
else print("Perfect");
return 0;
}
問題文の通りに分岐。
B - 文字数カウント
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<n;++i)
#define per(i,n) for(int i=n-1;i>=0;--i)
#define sc1(a) scanf("%d",&a)
#define sc2(a,b) scanf("%d %d",&a,&b)
#define sc3(a,b,c) scanf("%d %d %d",&a,&b,&c)
#define sl1(a) scanf("%lld",&a)
#define sl2(a,b) scanf("%lld %lld",&a,&b)
#define sl3(a,b,c) scanf("%lld %lld %lld",&a,&b,&c)
#define PI 3.1415926535897932
#define ll long long
#define print(a) cout << a << endl
int souwa(int a) {return (1+a)*a/2;}
int lcm(int a,int b) { return a*b/__gcd(a,b); }
bool sankaku(int a,int b,int c) {vector <int> t={a,b,c};sort(t.begin(),t.end()); return t.at(0)+t.at(1)>t.at(2);};
int main(){
int mod=1000000007;
string s,t;
cin >> s;
vector<int> a(6,0);
rep(i,s.size()) a.at(s.at(i)-'A')++;
printf("%d %d %d %d %d %d\n",a.at(0),a.at(1),a.at(2),a.at(3),a.at(4),a.at(5));
return 0;
}
-'A'
して数える。出力がめんどくさい。6つも半角区切りで出力させないでおくれ。
C - 数を3つ選ぶマン
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<n;++i)
#define per(i,n) for(int i=n-1;i>=0;--i)
#define sc1(a) scanf("%d",&a)
#define sc2(a,b) scanf("%d %d",&a,&b)
#define sc3(a,b,c) scanf("%d %d %d",&a,&b,&c)
#define sl1(a) scanf("%lld",&a)
#define sl2(a,b) scanf("%lld %lld",&a,&b)
#define sl3(a,b,c) scanf("%lld %lld %lld",&a,&b,&c)
#define PI 3.1415926535897932
#define ll long long
#define print(a) cout << a << endl
int souwa(int a) {return (1+a)*a/2;}
int lcm(int a,int b) { return a*b/__gcd(a,b); }
bool sankaku(int a,int b,int c) {vector <int> t={a,b,c};sort(t.begin(),t.end()); return t.at(0)+t.at(1)>t.at(2);};
int main(){
int mod=1000000007;
int n,m,x,y,cnt=0;
string s,t;
vector<int> a(5);
vector<int> ans;
rep(i,5) cin >> a.at(i);
for(int i=0;i<3;i++) for(int j=i+1;j<4;j++) for(int k=j+1;k<5;k++) {
ans.push_back(a.at(i)+a.at(j)+a.at(k));
}
sort(ans.begin(),ans.end());
print(ans.at(7));
return 0;
}
和を全部作ったけどそこまでする必要なかったけど処理時間は問題ないし確実な方法であれこれそれ。
D - 乱数生成
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<n;++i)
#define per(i,n) for(int i=n-1;i>=0;--i)
#define sc1(a) scanf("%d",&a)
#define sc2(a,b) scanf("%d %d",&a,&b)
#define sc3(a,b,c) scanf("%d %d %d",&a,&b,&c)
#define sl1(a) scanf("%lld",&a)
#define sl2(a,b) scanf("%lld %lld",&a,&b)
#define sl3(a,b,c) scanf("%lld %lld %lld",&a,&b,&c)
#define PI 3.1415926535897932
#define ll long long
#define print(a) cout << a << endl
int souwa(int a) {return (1+a)*a/2;}
int lcm(int a,int b) { return a*b/__gcd(a,b); }
bool sankaku(int a,int b,int c) {vector <int> t={a,b,c};sort(t.begin(),t.end()); return t.at(0)+t.at(1)>t.at(2);};
int main(){
int mod=1000000007;
ll n,k,x,y,cnt=0;
double ans=0;
cin >> n >> k;
for (ll i=1ll;i<k;i++) {
cnt+=3;
cnt+=(6*(n-k));
}
cnt++;
cnt+=(n-k)*3;
printf("%.15lf\n",1.0*cnt/(n*n*n));
return 0;
}
kが中央値になるような3つの集まりを数える。kは一つ固定で必要なので、((kより小さい),k,(k以上))
を数えました。
((kより小さい),k,k)
はその集まりで組み合わせ3つ。
((kより小さい),k,(k以上))
はその集まりで組み合わせ6つ。
(k,k,k)
は組み合わせ1つ。
数えた組み合わせの合計とnの3乗で割り算。