夢追い人

"It takes a dreamer to make a dream come true."―Vincent Willem van Gogh

SRM165〜167 Div.2 Easy

今日も昆布だったから三問といた。

資材の次期C決まったよw

165 BritishCoins

昔、イギリスあたりの通貨制度は12ペンス=1シリング、20シリング=1ポンドのようなポンド、シリング、ペンスで成り立っていた。
ココで単位がペンスの数値をあげるから、ポンドとシリングとペンスに分けろって問題。

書くだけ

class BritishCoins {
   public:
   vector <int> coins(int pence)
  {
	vector <int> res(3);
	if (pence >= 240) {
		res[0] = pence/240;
		pence -= pence/240*240;
	} else {
		res[0] = 0;
	}
	if (pence >= 12) {
		res[1] = pence/12;
		pence -= pence/12*12;
	} else {
		res[1] = 0;
	}
	res[2] = pence;
	return res;
  }
};

166 Workshop

なんか店で額縁みたいなの作るんだけど、その額縁が三角形らしく、与えられた棒(実際あたえられるのはそれぞれの棒の長さ)で何パターンの額縁ができるか?

三角形になるかの判定関数書いといて、ひたすらループでおk。ものすごいソートが無駄だけどキニシナイ。

class Workshop {
   public:
   bool ok(int a, int b, int c) {
   	if (a+b <= c) return false;
   	if (a+c <= b) return false;
   	if (b+c <= a) return false;
   	return true;
   }
   int pictureFrames(vector <int> pieces)
  {
  	int res = 0;
  	sort(pieces.begin(), pieces.end());
  	if (pieces.size() < 3) return 0;
	for (int i=0; i<pieces.size()-2; i++) {
		for (int j=i+1; j<pieces.size()-1; j++) {
			for (int k=j+1; k<pieces.size(); k++) {
				if (ok(pieces[i],pieces[j],pieces[k])) { 
					res++;
				}
			}
		}
	}
	return res;
  }
};

最初ok()にi,j,k渡してて答え合わなくて焦ってたw

167 EyeDrops

ひたすら読解ゲーだった。
目が悪いらしく、睡眠時間がいつも一定の人がいる。このときこの人の睡眠時間と一日に薬をのむ回数が与えられるので、何分ごとに薬を飲まなければいけないか計算する問題。

問題の意味がわかれば簡単。CodeProcessorとか使ってるとオフラインテストで最後のExampleが必ずFailedになる仕様なので要注意。
long doubleじゃなくてもよかった気がするけどお察しください↑

class EyeDrops {
   public:
   double closest(int sleepTime, int k)
  {
	long double res;
	long double day = 24*60;
	sleepTime *= 60;
	long double act = day-sleepTime;
	if (day/k >= sleepTime) {
		res = day/k;
	} else {
		res = act/(k-1);
	}
	return res;
  }
};