Uva 725 ----------- Division

  1. // Uva 725    --------  Division
  2. #include <iostream>
  3. #include <cstdlib>
  4. #include <cstring>
  5. using namespace std;
  6. int main()
  7. {
  8. int iInput;
  9. int iFlag, iFlag2, iFlag3;
  10. bool second;
  11. int iBucket[10] = {0};
  12. int iRem[5] = {0};      // store number of abcde   
  13. second = false;
  14. while ( cin >> iInput )
  15.     {  
  16.     if ( iInput == 0 )
  17.         break;
  18.     if ( second )
  19.         cout << endl;
  20.     else
  21.         second = true;
  22.     int i,j,k,l,m;
  23.     int iNum, iTemp, iTemp2,count; 
  24.     iFlag3 = 0;
  25.     for ( i=12345 ; i<=98765 ; i++ )
  26.         {
  27.         memset (iBucket,0,sizeof(iBucket));
  28.         iTemp = i; 
  29.         iFlag = j = 0;
  30.         while ( iTemp > 0 )
  31.             {
  32.             iRem[j] = iTemp % 10;
  33.             l = iTemp % 10;
  34.             iTemp = iTemp / 10;
  35.             for ( k=0 ; k<; k++ )
  36.                 {
  37.                 if (!= iRem[k])
  38.                     iFlag ++;          
  39.                 else
  40.                     {
  41.                     iFlag = 0;
  42.                     break;
  43.                     }
  44.                 }
  45.             if ( iFlag == 0 && j>0 )   
  46.                 break;
  47.             j++;
  48.             }
  49.         iFlag2 = 0;
  50.         if ( iFlag == 10 )
  51.             {
  52.             for ( m=0 ; m<5 ; m++ )
  53.                 iBucket[iRem[m]]++;
  54.             if ( i % iInput == 0  )
  55.                 {
  56.                 count++;   
  57.                 iTemp2 = i/iInput;     
  58.                 while ( iTemp2 > 0 )   
  59.                     {  
  60.                     if ( iBucket[iTemp2 % 10] == 0 )   
  61.                         {  
  62.                         iBucket[iTemp2 % 10]++;
  63.                         iFlag2 = 1;
  64.                         }
  65.                     else
  66.                         {
  67.                         iFlag2 = 0;
  68.                         break; 
  69.                         }  
  70.                     iTemp2 = iTemp2 / 10;  
  71.                     }
  72.                 for ( m=1 ; m<=9 ; m++ )
  73.                     if ( iBucket[m] == 0 )
  74.                         iFlag2 = 0;
  75.                 if ( iFlag2 == 1 ) 
  76.                     {
  77.                     cout << i << " / ";
  78.                     if ( iBucket[0] == 0 )
  79.                     cout << "0";
  80.                     cout << i / iInput << " = " << iInput << endl; 
  81.                     iFlag3 = 1;
  82.                     }
  83.                 }      
  84.             }
  85.         }          
  86.     if ( iFlag3 == 0 )
  87.         cout << "There are no solutions for " << iInput << "." <<endl; 
  88.     }
  89. }

hint:  固定 abcde 檢查無重複的數 然後除他給的數也就是N 可整除之後判斷商和被除數 有沒有把1~9全用掉

留言

這個網誌中的熱門文章

Codeforces --- string task

Uva 674 ---- coin change

codeforces 271A --- beautiful year