Problem Solving

[USACO] 1.2 Dual Palindromes

끄적끄적 2008. 10. 10. 13:58

앞 문제와 거의 유사한 문제..

string fromDecimal(int n, int b)
{
   string result;
     
   while(n>0)
   {
      if(n%b >= 10) result += 'A'+(n%b)%10;
      else result += '0' + (n%b);
      n/=b;
   }
     
   reverse(ALL(result));
   return result;
}

bool is_pal(string s)
{
    int n = s.size();
    REP(i, n/2)
    {
        if( s[i] != s[n-1-i] ) return false;
    }
    return  true;
}

int main() {

    ofstream fout ("dualpal.out");
    ifstream fin ("dualpal.in");

    int n, s;
    fin >> n >> s;

    for(int i=s+1; n > 0 ; i++)
    {
        int cnt = 0;
        for(int j=2; j<=10; j++)
        {
            string str = fromDecimal(i, j);
            if( is_pal(str) ) cnt++;
            if( cnt > 1)
            {
                fout << i << endl;
                n--;
                break;
            }
        }
    }
    return 0;
}



반응형