AtCoder Beginner Contest 101/AtCoder Regular Contest 099
はい。
https://beta.atcoder.jp/contests/abc101
A - Eating Symbols Easy
#include<bits/stdc++.h> using namespace std; #define PI 3.1415926535897932 int main(){ int mod=1000000007; int ans=0; char s[4]; scanf("%s",&s); for (int i=0;i<4;i++) { if (s[i]=='+') ans++; if (s[i]=='-') ans--; } printf("%d\n",ans); return 0; }
先頭から+-シミュでも順番に意味はないのでカウントして差分計算でもすれば大丈夫だと思う。
B - Digit Sums
Python3
n=int(input()) tmp=n chk=0 while tmp: chk+=tmp%10 tmp//=10 print("No" if n%chk else "Yes")
別にC++でも書けた気がする。各桁の和を求めるのって%10で下一桁を見た後に/=で下一桁捨てるっていうのを繰り返す以外になんか楽な方法ないんかな。。。
C - Minimization
Python3
n,k=map(int,input().split()) a=[int(i) for i in input().split()] chk=a.index(1) k-=1 l=chk r=n-chk-1 ans=((l+k-1)//k)+((r+k-1)//k) if l%k==0: t1=0 else: t1=k-(l%k) ans=min(ans,((l+k-1)//k)+((r-t1+k-1)//k)) if r%k==0: t2=0 else: t2=k-(r%k) ans=min(ans,((l-t2+k-1)//k)+((r+k-1)//k)) print(ans)
1があるトコから左右それぞれの端まで1に置き換えていく。端まで行った時に余りがある場合には手数を節約できるかもしれないのでそれも確認する。