SRM 284 DIV1 Easy - TriCount (復習×○)

問題


http://community.topcoder.com/stat?c=problem_statement&pm=4811&rd=8081

1辺の最小の長さと、最大の長さが与えられる。
このとき、とりうる三角形の数を求める。
ただし、回転して同じ三角形になる場合は同じものとみなす。
答えが10^9を超える場合は-1を返す。

解き方


2重ループでは計算量として間に合わない、はずなのですが
10^9以上は-1を返すので2重ループで収まります。

コード


class TriCount {

public: int count(int minLength, int maxLength) {
long long ret=0LL;

FORE(i,minLength,maxLength+1){
FORE(j,i,maxLength+1){
ret+=min(maxLength,i+j-1)-j+1;
if(ret>1000000000)return -1;
}
}

return ret;
}

};
このエントリーをはてなブックマークに追加