Topcoder SRM 515 div2 east "FortunateNumbers"
数値の配列が3つ与えられる.それぞれの配列に含まれる数値を合計したときの数がすべての桁で5または8である場合にFortunateNumberとするとき,このFortunateNumberの数を求める.ただし,同じ数はカウントしない.
同じ数をカウントしないのでHashSetを用い,各桁を取り出すために文字列に変換して求めた.
import java.util.*; public class FortunateNumbers { public int getFortunate(int[] a, int[] b, int[] c) { Set<Integer> set = new HashSet<Integer>(); for(int i = 0; i < a.length; ++i){ for(int j = 0; j < b.length; ++j){ for(int k = 0; k < c.length; ++k){ set.add(a[i] + b[j] + c[k]); } } } int n = 0; for(int i : set){ if(f(""+i)){ ++n; } } return n; } private boolean f(String s){ for(char c : s.toCharArray()){ if(c != '5' && c != '8'){ return false; } } return true; } }