SRM504.5 Div1 Easy(250), Div2 Medium(500) TheNumbersWithLuckyLastDigit

TheNumbersWithLuckyLastDigit

1の位が4と7の数を何個足し合わせるかを考える。10以上の位は適当に辻褄を合わせられる。ただし、4と7を加えてnを超える場合は無理。

#include <algorithm>
using namespace std;

class TheNumbersWithLuckyLastDigit{public:
int find( int n )
{
    int ans = 100;

    for ( int n4=0; n4<=9; n4++ )
    for ( int n7=0; n7<=9; n7++ )
        if ( n4+n7 > 0  &&
             (n4*4+n7*7)%10 == n%10  &&
             n4*4+n7*7 <= n )
            ans = min( ans, n4+n7 );

    return ans<100 ? ans : -1;
}};