久しぶりの過去問(?)
なんかちょいと昨日C#で書いてたような…
ともかく今日もEasy。
Mediumもやろうと思ったけど時間的に・・・
446 Div.2 Easy
class SoldierLabeling { public: int count(int n, int lowerBound, int upperBound) { int lower = (int)pow(10.0, lowerBound-1)-1; int upper = (int)pow(10.0, upperBound)-1; lower=min(n,lower); upper=min(n,upper); // cout << lower << " " << upper << endl; return upper-lower; } }
解説省略。
とりあえずC#で解いたやつも載せておこう。
SimpleCalculator
public class SimpleCalculator { public int calculate(string input) { int res = 0; int index = input.IndexOfAny(new char[] {'+', '-', '*', '/'}); int n1 = int.Parse(input.Substring(0, index)); int n2 = int.Parse(input.Substring(index+1)); switch(input[index]){ case '+': res = n1+n2; break; case '-': res = n1-n2; break; case '*': res = n1*n2; break; case '/': res = n1/n2; break; } return res; } }
OnLineRank
public class OnLineRank { public int calcRanks(int k, int[] scores) { int res = 1; if (scores.Length < k) k = scores.Length; for (int i = 1; i < scores.Length; i++) { int tmp = scores[i]; int rank = 1; for (int j = i - 1; j >= i - k && j >= 0; j--) { if (tmp < scores[j]) rank++; } res += rank; } return res; } }
HuffmanDecoding
public class HuffmanDecoding { public string decode(string archive, string[] dictionary) { string res = ""; string tmp = ""; bool flag = false; for (int i = 0; i < archive.Length; i++) { tmp += archive[i]; for (int j = 0; j < dictionary.Length; j++) { if (tmp == dictionary[j]) { res += (char)('A' + j); flag = true; break; } } if (flag) { tmp = ""; flag = false; } } return res; } }
CheckFunction
public class CheckFunction { public int newFunction(string code) { int ans = 0; for (int i=0;i<code.Length;i++){ switch(code[i]) { case '0': ans += 6; break; case '1': ans += 2; break; case '2': ans += 5; break; case '3': ans += 5; break; case '4': ans += 4; break; case '5': ans += 5; break; case '6': ans += 6; break; case '7': ans += 3; break; case '8': ans += 7; break; case '9': ans += 6; break; } } return ans; } }
全部通ってるはず。
親に起こられたので寝ます。