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倍にしたりなど。