列表

详情


NC14309. Interview

描述

Alice and Bob are going to Tenbaba for an interview. There are totally N candidates(including Alice and Bob) applying for this job. The recruitment process of Tenbaba is strict. So all of them need to have an interview with the department manager. N candidates will get a unique integer from 1 to N with equal probability. And they will go to interview with the manager according to the number they get. The candidate with number 1 will be interviewed firstly, the candidate with number 2 will be interviewed secondly and so on.
What's more, HR(the staff to arrange the interview for you) will randomly choose a nonnegative integer K in range [0..N] with equal probability. The candidates whose numbers are not greater than K will be interviewed in order of their numbers on the first day. Remaining candidates will be interviewed in order of their numbers on the second day. Candidates don't know K. But each one will knows on which day he or she will be interviewed.
Sadly, Alice forgot her number. The only thing she remember is that she will be interviewed on the second day. Alice also knows on which day Bob will be interviewed. But she doesn't know the exact number Bob has. Assume that Alice would be the Y-th(1≤ Y ≤ N - K) candidate to interview with the manager on the second day. Please help Alice to calculate the expectation of Y because Alice doesn't want to go out too early.

输入描述

The first line is the number of test cases. It's guaranteed that the test cases is not greater than 105.
Each test case contains two integers N and D (2 ≤ N ≤ 109, D = 1 or 2). D = 1 means Bob will be interviewed on the first day and D = 2 means Bob will be interviewed on the second day.

输出描述

Each test case contains one line with one integer. Let‘s assume the possibility be equal to the irreducible fraction P / Q. Print the value of P * Q-1 in the prime field of integers modulo 1000000007(109+7).

示例1

输入:

3
2 1
3 2
100 1

输出:

1
875000008
500000029

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++11(clang++ 3.9) 解法, 执行用时: 32ms, 内存消耗: 1272K, 提交时间: 2020-10-11 16:56:48

#include <bits/stdc++.h>
using namespace std;
const int P = 1e9 + 7;
const int X = 1e9 + 8;

int main() {
	int T; scanf("%d", &T);
	while (T--) {
		long long n; int o;
		scanf("%lld%d", &n, &o);
		if (o == 1) {
			printf("%d\n", ((n + 2) * X / 4) % P);
		}
		else {
			printf("%d\n", ((3 * n + 6) * X / 8) % P);
		}
	}
	return 0;
}

上一题