μ΄ ν¬μ€ν μ μΏ ν‘ ννΈλμ€ νλμ μΌνμΌλ‘, μ΄μ λ°λ₯Έ μΌμ μ‘μ μμλ£λ₯Ό μ 곡λ°μ μ μμ΅λλ€.
λ°μν
2008/09/05 μ νμλ λ¬Έμ λ€μ :)
#include#include #include #include //#include //#include using namespace std; set< int > setInteger; string intToString(int nInput); //string νμ λ°μμ panDigitμ΄ λμλμ§ μλμ§ νμΈ bool isPanDigit(string x, string y, string strResult); int main() { int i,j; //μ λ΅ μ μ₯ int nResult = 0; for( i = 1 ; i <= 100 ;i++ ) { for( j = 1 ; j <= 10000 ;j++ ) { // i j i*j if(isPanDigit(intToString(i), intToString(j), intToString(i*j) ) ) { cout << "panDigit λ°κ²¬ : " << i << " X " << j << " = " << i*j << endl; setInteger.insert(i*j); } } } //for(i = 0 ; i < setInteger.size() ; i++) for( set< int > :: iterator it = setInteger.begin() ; it != setInteger.end() ;it++ ) { nResult += (*it); } cout << "μ€λ³΅μμ μ κ±°ν μ λ΅ : " << nResult << endl; return 0; } //int -> string string intToString(int nInput) { // int λ₯Ό string μΌλ‘ λ°κΎΈκΈ° μμ char szBuf[512]; sprintf(szBuf,"%d",nInput); string strTemp(szBuf); return strTemp; // int λ₯Ό string μΌλ‘ λ°κΎΈκΈ° λ. } //string νμ λ°μμ panDigitμ΄ λμλμ§ μλμ§ νμΈ bool isPanDigit(string x, string y, string strResult) { int i; bool bPanDigit[10] = {false}; // ex) X * Y = result μΌλ Xμ λ¬ΈμκΈΈμ΄ λ§νΌ ꡬνν.. for(i = 0 ; i < x.size() ; i++) { if(bPanDigit[ x[i]-'0' ]== true) { return false; } bPanDigit[ x[i]-'0' ] = true; } for(i = 0 ; i < y.size() ; i++) { if(bPanDigit[ y[i]-'0' ]== true) { return false; } bPanDigit[ y[i]-'0' ] = true; } for(i = 0 ; i < strResult.size() ; i++) { if(bPanDigit[ strResult[i]-'0' ]== true) { return false; } bPanDigit[ strResult[i]-'0' ] = true; } //λͺ¨λ λ°°μ΄μ΄ trueμ΄λ©΄ true νλλΌλ false μ΄λ©΄ false if(bPanDigit[0] == true) { return false; } for(i = 1 ; i < 10 ; i++) { if( bPanDigit[i] == false ) { return false; } } return true; // }
λ°μν