列表

详情


NC229747. Bash Plays with Functions

描述

定义函数 f_r(n)

- 在 时,为满足 的有序对 (p,q) 个数;
- 在 时,

一共 q 组询问,每组询问给出 r,n,求 f_r(n) 的结果。

输入描述

第一行包括一个正整数
接下来行,每行包括两个整数

输出描述

输出一个整数表示答案。

示例1

输入:

5
0 30
1 25
3 65
2 5
4 48

输出:

8
5
25
4
630

原站题解

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

C++ 解法, 执行用时: 1543ms, 内存消耗: 88284K, 提交时间: 2022-03-10 17:44:47

#include<bits/stdc++.h>
using namespace std;
int q, n, k, ans, mo=1e9+7, f[1000005][20];
int main(){
	f[0][0]=1;
	for(int i=1; i<20; i++) f[0][i]=2;
	for(int i=1; i<=1000000; i++){
		f[i][0]=1;
		for(int j=1; j<20; j++){
			f[i][j]=(f[i][j-1]+f[i-1][j])%mo;
		}
	}
	scanf("%d", &q);
	while(q--){
		ans=1;
		scanf("%d%d", &k, &n);
		for(int i=2; i*i<=n; i++){
			if(n%i) continue;
			int cnt=0;
			while(n%i==0) cnt++, n/=i;
			ans=1ll*ans*f[k][cnt]%mo;
		}
		if(n>1) ans=1ll*ans*f[k][1]%mo;
		printf("%d\n", ans);
	}
	return 0;
}

上一题