君はまるで砂漠に咲く、一輪の花。

僕はその花に引き寄せられる蝶。

Codeforces Round #117 (Div. 2)

はい。
http://codeforces.com/contest/182

B. Vasya's Calendar

ざっくりと大意

・Vasyaは1年がnヶ月でそれぞれがa日な時間で生活している
・時計の日付機能は1からdまででdの次は1へループして調整は加算しか出来ない
・1年の最終までに月変わりの時に発生することのある日付調整の加算は合計何回行われているか

方針のようなもの

・d-aを足していくだけかな??

d=int(raw_input())
n=int(raw_input())
l=[int(x) for x in raw_input().split()]
ans=chk=0
for i in range(n-1):
    ans+=d-l[i]
print ans

D. Common Divisors

ざっくりと大意

・文字列の並びで共通の約数のようなものを見つける??
・abcdabcdとabcdabcdabcdabcdは、abcdとabcdabcdが共通する約数のようなもの
・aaaとaaは、共通するのはaのみaaやaaaは一方に対して約数にならない

方針のようなもの

・短い文字列の方から約数になる並びを探して長い方に見に行ったら全然時間が足りなかった...

#test 3 でTLE
import re
n=raw_input()
m=raw_input()
chk=set()
ans=cnt=0
if len(n)>len(m):
    while len(m)/2>=cnt:
        cnt+=1
        if len(m)%cnt:
            pass
        elif len(re.findall(m[:len(m)/cnt],m))*(len(m)/cnt)==len(m):
            chk.add(m[:len(m)/cnt])
    chk=list(chk)
    for j in chk:
        if len(re.findall(j,n))*len(j)==len(n):
            ans+=1
else:
    while len(n)/2>=cnt:
        cnt+=1
        if len(n)%cnt:
            pass
        if len(re.findall(n[:len(n)/cnt],n))*(len(n)/cnt)==len(n):
            chk.add(n[:len(n)/cnt])
    chk=list(chk)
    for j in chk:
        if len(re.findall(j,m))*len(j)==len(m):
            ans+=1
print ans