능력
시간 제한2초메모리 제한512 MB
능력을 무작위 순서로 중복 없이 시도하다가 하나가 발동하면 멈추는 공격 한 번의 기대 피해량을 구해 유리수로 1e9+7 모듈로 출력한다.
문제
몬스터와 싸우는 웹게임에서 플레이어는 공격 능력 개를 모두 장착하고 있다. 능력에는 1번부터 번까지 번호가 붙어 있다.
번 능력에는 발동 확률 와 피해량 가 정해져 있다. 번 능력에 발동 명령을 내리면 의 확률로 능력이 발동해 상대에게 만큼의 피해를 입히고, 의 확률로 발동하지 않아 아무 일도 일어나지 않는다.
공격 기회를 한 번 얻으면 다음 과정이 진행된다.
- 장착한 능력 중 하나를 고른다. 각 능력이 뽑힐 확률은 모두 같다.
- 고른 능력에 발동 명령을 내린다.
- 능력이 발동했으면 공격 기회를 잃고 과정이 끝난다.
- 발동하지 않았으면 아직 발동 명령을 내리지 않은 능력 중 하나를 같은 확률로 고른 뒤 2번으로 돌아간다.
- 모든 능력에 발동 명령을 내렸는데도 발동한 능력이 하나도 없으면 피해 없이 공격 기회를 잃는다.
능력 개의 발동 확률과 피해량이 주어질 때, 공격 기회 한 번에서 상대에게 주는 피해량의 기댓값을 구하라.
입력
첫째 줄에 능력의 수 ()이 주어진다.
다음 개 줄 중 번째 줄에는 두 정수 , ()가 공백을 사이에 두고 주어진다. 번 능력은 의 확률로 발동하고, 발동하면 만큼의 피해를 입힌다.
출력
공격 기회 한 번에서 주는 피해량의 기댓값을 출력한다. 기댓값을 기약분수 로 나타냈을 때 을 대신 출력한다. 은 을 법으로 하는 의 곱셈 역원이다. 이 문제에서 주어지는 모든 입력에 대해 이 값은 존재한다.