1 ] 1, 2, 3, 4, 5, 6으로 구성된 A/B = C/D + E/F 를 만족하는 A, B, C, D, E, F 값을 찾아라. 그리고 AB.CDEF 으로 출력해라
2] 1, 2, 3, 4, 5, 6, 7, 8으로 구성된 A/B = C/D + E/F + G/H를 만족하는 경우를 찾아라. 그리고 ABC.DEFGH로 출력해라
1] 123456~654321까지의 숫자 중 IsTrue라는 함수를 이용해 각 자리의 숫자를 뽑아낸다.
이 과정에서 0, 7, 8, 9, 중복 등이 있는지 확인한다.
그리고 A/B = C/D + E/F가 성립하는 경우에 출력한다.
2] 12345678~87654321에서 1] 과 같은 방법을 사용한다.
1 ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #include <iostream> #include <math.h> using namespace std; int array[10] = { 0 }; int IsTrue (int a){ int check[10] = { 0 }; int j; for (j = 5; j >= 0; j--){ array[j] = a % 10; a /= 10; if (check[array[j]] != 0 || array[j] == 7 || array[j] == 8 || array[j] == 9 || array[j] == 0) return 1; check[array[j]] = 1; } return 0; } int main () { int i; for (i = 123456; i <= 654322; i+=3) { int q = i; if (IsTrue (q) == 1) continue; float A=(float)array[0]/(float)array[1]; float B=(float)array[2]/(float)array[3]+(float)array[4]/(float)array[5]; if (floor(A*10000)==floor(B*10000)) { int p; for (p = 0; p < 6; p++) {cout << array[p];if(p==1)cout<<".";} cout << endl;} } }
| cs |
2]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include <iostream> #include <math.h> using namespace std; int array[10] = { 0 }; int IsTrue (int a){ int check[10] = { 0 }; int j; for (j = 7; j >= 0; j--){ array[j] = a % 10; a /= 10; if (check[array[j]] != 0 || array[j] == 9 || array[j] == 0) return 1; check[array[j]] = 1; } return 0; } int main (){ int i; for (i = 12345678; i <= 87654322; i+=9){ int q = i; if (IsTrue (q) == 1) continue; float A=(float)array[0]/(float)array[1]; float B=(float)array[2]/(float)array[3]+(float)array[4]/(float)array[5]+(float)array[6]/(float)array[7]; if (floor(A*10000)==floor(B*10000)){ int p; for (p = 0; p < 8; p++){ cout << array[p]; if(p==2)cout<<".";} cout << endl;} } } }
| cs |
}