SRM483 Div2

きゅうりコーダーになった。

250 DigitHoles

1~1000の値が与えられる。数字の穴の数を数える。4は1コ穴が空いてるものとして扱う。1,2,3,5,7は0コ、0,4,6,9は1コ、8は2コ。

リーディング力の限界。それなりに速かったはず。

248.32 Pt.

#define rep(i,n) for(int i=0;i<n;i++)
#define SS stringstream

class DigitHoles {
public:
	int numHoles(int number) {
		int table[] = {1,0,0,0,1,0,1,0,2,1};
		int ret = 0;
		SS ss;
		ss << number;
		string s = ss.str();
		rep(i,s.length()){
			ret+=table[s[i]-'0'];
		}
 		return ret;
	}
};

500 getSeatings

与えられた人数の人が縦一列か横一列に並べるようなパターンは何個あるか。

順列とか学校でまだ習ってないから強引に書いた。そしたら落ちた。予習しとこうかな。

チャレンジ祭りたまげたなぁ。1,{"."}で落ちまくる。縦と横を別々に処理するせい。自分は本番で気づけなかったけど。

252Ptくらいの超低速Submit → Challenged 0.0Pt.

#define rep(i,n) for(int i=0;i<n;i++)

int fa(int a){
	int ret = 1;
	rep(i,a){
		ret*=i+1;
	}
	return ret; 
}
int ku(int a){
	int ret = 0;
	rep(i,a){
		ret+=i+1;
	}
	return ret; 
}
class MovieSeating {
public:
	long long getSeatings(int num, vector <string> h) {
		long long ret = 0;
		int n = h[0].length();
		rep(i,h.size()){
			int sum = 0;
			rep(j,n){
				if(h[i][j]=='.')sum++;
			}
			if(sum>=num){
				ret+=ku(sum-num+1);
			}
		}
		n = h.size();
		rep(i,h[0].length()){
			int sum = 0;
			rep(j,n){
				if(h[j][i]=='.')sum++;

			}
			if(sum>=num){
				ret+=ku(sum-num+1);
			}
			//cout << sum << endl;
		}
 		return ret*fa(num);
	}
};

1000 BestApproximationDiv2

与えられた小数に一番近い(先頭から見ていってどれだけ一致してるか)分数を返す。「C++」と「分母の上限が100000」で書くの諦めた。

その代わりにTLEケースとか、100000付近で入力上限50桁ギリギリまで一致するケース作ってた。

Compiled 0.0Pt.

Challenge Phase

僕がRoomで唯一提出してる1000点をChallengeしている一瞬の間に500が大量にChallengeされてた。恐すぎ。僕のやつもされてた。

1 Success - 50.Pt

Result

248.32 + 0.0 + 0.0 + 50.0 = 298.32Pt.

Division 2 141位.

レート kyuridenamida(881)→ kyuridenamida(967)

@hogeover30(Masa-Y)氏が3完+12回チャレンジ成功で1位らしい。おめでとうございます!!

12回チャレンジって・・・。

あとPetrが3コ全部落としたらしい。地球が崩壊する可能性がある。