아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

A+B

시간 제한1초메모리 제한512 MB

요약
세 줄로 적힌 n자리 수에서 열의 순서를 바꿔 a+b=c가 성립하는 경우의 수를 10^9+7로 나눈 나머지로 구합니다.
난이도

어려움10점 중 8점

유형
동적 계획법, 조합론, 수학
정답자
아직 제출이 없습니다

문제

aa, bb, cc는 십진법으로 적은 음이 아닌 정수다. 세 수의 길이는 모두 nn으로 같고, 앞자리가 0으로 시작할 수 있다. 세 수를 한 줄씩 위아래로 적으면 숫자가 3행 nn열로 배치된다. 이러한 표기의 예는 다음과 같다:

01211
12099
23300

이 표기의 열을 재배열해서 a+b=ca+b=c가 성립하도록 해야 한다. 재배열한 표기에서는 앞자리 0이 이미 금지되어 있다. 가능한 재배열 방법의 수를 구하라.

재배열한 결과의 표기가 같더라도 열의 순서가 다르면 서로 다른 방법으로 센다. 예를 들어 위 표기에서 마지막 두 열을 맞바꾸면, 두 열의 숫자가 같아도 다른 재배열이 된다.

답이 클 수 있으므로 109+710^9+7로 나눈 나머지를 출력한다.

입력

입력은 정수 aa, bb, cc가 한 줄에 하나씩 주어진다. 각 수는 nn개의 십진수 숫자로 이루어지며, 앞자리가 0일 수 있다 (2≤n≤2⋅1052 \leq n \leq 2 \cdot 10^5).

출력

조건을 만족하는 열 재배열의 수를 109+710^9+7로 나눈 나머지를 출력한다.

힌트

첫 번째 예에서는 모든 열 재배열이 조건을 만족한다.

두 번째 예에서 조건을 만족하는 재배열은 하나뿐이며, 그때의 식은 10+20=3010+20=30이다. 01+02=0301+02=03은 앞자리 0이 있으므로 제외된다.

세 번째 예에서는 10121+21909=3203010121+21909=32030과 12101+20919=3302012101+20919=33020 두 경우가 가능하며, 각각은 서로 다른 두 재배열로 얻어진다.

예제4

  1. 예제 1

    입력
    123
    123
    246
    
    예상 출력
    6
    
  2. 예제 2

    입력
    01
    02
    03
    
    예상 출력
    1
    
  3. 예제 3

    입력
    01211
    12099
    23300
    
    예상 출력
    4
    
  4. 예제 4

    입력
    121
    214
    999
    
    예상 출력
    0