/**********
author:chanjun2016
email:15755396353@163.com
***********/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <vector>
#include <string>
#include <map>
#include <set>
#include <algorithm>
using namespace std;
#define INF = 0x3f3f3f3f
const int maxn = 1e7;
const int MOD = 1e8 + 7;
int phifact[maxn];
int vis[maxn];
void sieve(){
int q = sqrt(maxn + 0.5);
for (int i = 2; i <= q; ++i){
if (!vis[i]){
for (int j = i * i; j <= maxn; j += i){
vis[j] = 1;
}
}
}
}
int main(){
sieve();
phifact[1] = phifact[2] = 1;
for (int i = 3; i <= maxn; ++i){
phifact[i] = (long long)phifact[i - 1] * (vis[i] ? i: (i - 1)) % MOD;
}
int n,m;
while (scanf("%d%d",&n,&m),n && m){
int ans = phifact[m];
for (int i = m + 1; i <= n; ++i){
ans = (long long)ans * i % MOD;
}
printf("%d\n", (ans - 1 + MOD) % MOD);
}
return 0;
}
uva11440
最新推荐文章于 2021-02-21 16:57:43 发布