양 세 마리 가 서 예 를 바치다.

아래 의 덧셈 산식 관찰 하기:
      상서 로 운 기운 이 눈 부시 게 빛나다.  +   삼 양 헌 서   양 세 마리 가 상서 로 운 기운 을 낸다.
그 중에서 같은 한 자 는 같은 숫자 를 대표 하고 서로 다른 한 자 는 서로 다른 숫자 를 대표 한다.
'삼 양 헌 서' 가 대표 하 는 네 자리 숫자 (답 이 유일 하 다) 를 작성 하 세 요. 불필요 한 내용 은 쓰 지 마 세 요.
역시 가장 멍청 한 방법 으로 폭력!!
위의 한자 등식 을 이렇게.
    a  b  c  d
+  e  f   g  b
하나하나
e  f   c   b  h
알다 시 피
1. a 와 e 는 0 부터 궁 거 를 시작 해 서 는 안 된다.
2. abcdefgb 가 각각 987654328 을 나타 낸다 고 가정 하면 이들 이 더 한 수 는 버 티 고 죽어도 20000 을 초과 하지 않 을 것 이다.
몽 띠 까지 맞 추 면 거의 알 수 있어 요. e 는 1 일 거 예요.
3. 현재 이미 알 고 있 는 e 는 1 이 고 efgb 를 가정 하면 각각 1234 를 나타 내 면 abcd 는 적어도 8766 을 더 해 야 10000 (efcbh) 을 넘 을 수 있 습 니 다.
몽타주 로 맞 히 면 a 의 범 위 는 8 - 9 사이 에 있다 는 것 을 알 수 있다.
4. a 가 8 - 9, e 가 1 인 것 을 알 고 있다. 다시 abcd 가 각각 9876 을 나타 낸다 고 가정 하면 efgb 분 표 는 1543 을 나타 내 고 두 수 를 더 하면 버 티 면 11xxx (efcbh) 를 초과 하지 않 는 다.
그래서 f 를 얻 을 수 있 는 범 위 는 0 - 1 사이 입 니 다.
public class HashMapTest {
	public static void main(String[] args) {
		//a 8-9     
		for (int a = 8; a <= 9; a++) {
			for (int b = 0; b <= 9; b++) {
				for (int c = 0; c <= 9; c++) {
					for (int d = 0; d <= 9; d++) {
						//e 1
						for (int e = 1; e <= 1; e++) {
							//f 0-1     
							for (int f = 0; f <= 1; f++) {
								for (int g = 0; g <= 9; g++) {
									for (int h = 0; h <= 9; h++) {
										if (a != b && a != c && a != d && a != e && a != f && a != g && a != h && b != c && b != d && b != e
												&& b != f && b != g && b != h && c != d && c != e && c != f && c != g && c != h && d != e && d != f
												&& d != g && d != h && e != f && e != g && e != h && f != g && f != h && g != h)
											if (((a * 1000 + b * 100 + c * 10 + d) + (e * 1000 + f * 100 + g * 10 + b)) == (e * 10000 + f * 1000 + c
													* 100 + b * 10 + h)) {
												System.out.println((a * 1000 + b * 100 + c * 10 + d) + "      " + (e * 1000 + f * 100 + g * 10 + b)
														+ "     " + (e * 10000 + f * 1000 + c * 100 + b * 10 + h));
											}
									}
								}
							}
						}
					}
				}
			}
		}
	}
}

정 답: 1085

좋은 웹페이지 즐겨찾기