AtCoder Beginner Contest 065/AtCoder Regular Contest 076
はい。
https://beta.atcoder.jp/contests/abc065
A - Expired?
Python3
x,a,b=map(int,input().split()) print('delicious' if -a+b<=0 else 'safe' if -a+b<=x else 'dangerous')
足し算とか引き算。
B - Trained?
Python3
n=int(input()) ans=0 p=1 chk=[0]*n l=[] for i in range(n): l.append(int(input())) while 1: if chk[p-1]==1: print(-1) break chk[p-1]=1 ans+=1 if l[p-1]==2: print(ans) break p=l[p-1]
シミュして確認、1に戻ったりすると2になるの不可能なので-1出力する。
C - Reconciled?
C++14
#include<bits/stdc++.h> using namespace std; int main(){ long long ans,o=1,p=1,mod=1000000007; int n,m; scanf("%d %d",&n,&m); if (abs(n-m)>1) { printf("0\n"); } else { for (int i=1;i<=min(n,m);i++) { o*=i; p*=i; o%=mod; p%=mod; } if (abs(n-m)%2) { o*=max(n,m); o%=mod; ans=(o*p)%mod; } else { ans=(o*p*2)%mod; } printf("%lld\n",ans); } return 0; }
N+M匹を一列にそれぞれ隣りあわず並ぶにはN,Mの差分が1以下の場合。N!とM!で組み合わせ数えたり、N==Mの場合にはどちらを先にするかで組み合わせ数2倍にしたりなど。