热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

1298OneTheorem,OneYear

1298-OneTheorem,OneYearPDF(English)StatisticsForumTimeLimit:2second(s)MemoryLimit:32MBAnum
1298 - One Theorem, One Year
  PDF (English) Statistics Forum
Time Limit: 2 second(s) Memory Limit: 32 MB

A number is Almost-K-Prime if it has exactly K prime numbers (not necessarily distinct) in its prime factorization. For example, 12 = 2 * 2 * 3 is an Almost-3-Prime and 32 = 2 * 2 * 2 * 2 * 2 is an Almost-5-Prime number. A number X is called Almost-K-First-P-Prime if it satisfies the following criterions:

  1. X is an Almost-K-Prime and
  2. X has all and only the first P (P ≤ K) primes in its prime factorization.

For example, if K=3 and P=2, the numbers 18 = 2 * 3 * 3 and 12 = 2 * 2 * 3 satisfy the above criterions. And 630 = 2 * 3 * 3 * 5 * 7 is an example of Almost-5-First-4-Pime.

For a given K and P, your task is to calculate the summation of Φ(X) for all integers X such that X is an Almost-K-First-P-Prime.

Input

Input starts with an integer T (≤ 10000), denoting the number of test cases.

Each case starts with a line containing two integers K (1 ≤ K ≤ 500) and P (1 ≤ P ≤ K).

Output

For each case, print the case number and the result modulo 1000000007.

Sample Input Output for Sample Input

3

3 2

5 4

99 45

Case 1: 10

Case 2: 816

Case 3: 49939643

Note
  1. In mathematics Φ(X) means the number of relatively prime numbers with respect to X which are smaller than X. Two numbers are relatively prime if their GCD (Greatest Common Divisor) is 1. For example, Φ(12) = 4, because the numbers that are relatively prime to 12 are: 1, 5, 7, 11.
  2. For the first case, K = 3 and P = 2 we have only two such numbers which are Almost-3-First-2-Prime, 18=2*3*3 and 12=2*2*3. The result is therefore, Φ(12) + Φ(18) = 10.

Problem Setter: Samir Ahmed
Special Thanks: Jane Alam Jan
思路:DP;状态转移方程dp[i][j]=dp[i-1][j-1]+dp[i][j-1];i表示前i个素数,j表示由前i个素数构成数的素数因子的长度,dp[i][j]存的是符合这个要求的所有数的和;
状态解释:当前末尾的数放的是第i个素数,那么它的前一个数放的是它的前一个素数或者是他本身。
所以dp先打个表,再根据欧拉函数n*((1-1/p1)*(1-1/p2).....);因为dp[i][j]是那些素因子都相同数的和,再将(p1*p2*....)的表打好an,把(p1-1)*(p2-1)*....bn打好
所以K=i,P=j;求的直就为dp[j][i]*(an[j]/bn[j])%mod;然后把bn[i]用费马小定理转换成逆元所以最后就为dp[j][i]*(an[j]*bn[j])%mod。
 1 #include
 2 #include
 3 #include
 4 #include 
 5 #include
 6 #include<string.h>
 7 #include
 8 #include
 9 #include
10 using namespace std;
11 typedef  long long LL;
12 typedef unsigned long long ll;
13 bool prime[5000]= {0};
14 int su[600];
15 LL  dp[600][600];
16 LL ola[600];
17 LL ola1[600];
18 const LL mod=1e9+7;
19 LL quick(int n,int m);
20 int main(void)
21 {
22         int i,j,k,p,q;
23         for(i=2; i<=100; i++)
24         {
25                 for(j=i; i*j<=5000; j++)
26                 {
27                         prime[i*j]=true;
28                 }
29         }
30         int ans=1;
31         for(i=2; i<=5000; i++)
32         {
33                 if(!prime[i])
34                 {
35                         su[ans++]=i;
36                 }
37         }
38         memset(dp,0,sizeof(dp));
39         dp[0][0]=1;
40         dp[1][1]=2;
41         for(i=1; i<=500; i++)
42         {
43                 for(j=i; j<=500; j++)
44                 {
45                         dp[i][j]=(((dp[i][j-1]+dp[i-1][j-1])%mod)*(su[i]))%mod;
46                 }
47         }
48         ola[1]=su[1];
49         ola1[1]=su[1]-1;
50         for(i=2; i<=500; i++)
51         {
52                 ola[i]=(su[i]*ola[i-1])%mod;
53                 ola1[i]=(su[i]-1)*ola1[i-1]%mod;
54         }
55         for(i=1; i<=500; i++)
56         {
57                 ola[i]=quick(ola[i],mod-2);
58         }
59         scanf("%d",&k);
60         int s;
61         for(s=1; s<=k; s++)
62         {
63                 scanf("%d %d",&p,&q);
64                 LL cnt=dp[q][p];
65                 LL cns=ola[q];
66                 LL bns=ola1[q];
67                 LL sum=((cnt*cns)%mod*bns)%mod;
68                 printf("Case %d: ",s);
69                 printf("%lld\n",sum);
70         }
71         return 0;
72 }
73 LL quick(int n,int m)
74 {
75         LL ans=1;
76         LL N=n;
77         while(m)
78         {
79                 if(m&1)
80                 {
81                         ans=(ans*N)%mod;
82                 }
83                 N=(N*N)%mod;
84                 m/=2;
85         }
86         return ans;
87 }

1298 - One Theorem, One Year


推荐阅读
  • HDU1085 捕获本·拉登!
    问题描述众所周知,本·拉登是一位臭名昭著的恐怖分子,他已失踪多年。但最近有报道称,他藏匿在中国杭州!虽然他躲在杭州的一个洞穴中不敢外出,但近年来他因无聊而沉迷于数学问题,并声称如果有人能解出他的题目,他就自首。 ... [详细]
  • BL550721、特点液晶驱动输出:Common输出4线,Segment输出36线内置显示寄存器364144bit2线串行接口(SCL,SDA)内置震荡电路内置液晶驱动电源电路13 ... [详细]
  • 本文通过具体示例详细介绍了 Python 中的装饰器和装饰类的使用方法,包括带参数的装饰器和装饰类的应用场景。 ... [详细]
  • javascript——对象的概念——函数 1 (函数对象的属性和方法)
    一、创建函数函数是一种对象:Function类是对象,可以通过Function实例化一个函数,不过最多的还是利用function来创建函数。方式一:利用Function类来实例化函 ... [详细]
  • Mysqlcheck作为MySQL提供的一个实用工具,主要用于数据库表的维护工作,包括检查、分析、修复及优化等操作。本文将详细介绍如何使用Mysqlcheck工具,并提供一些实践建议。 ... [详细]
  • LIN总线技术详解
    LIN(Local Interconnect Network)总线是一种基于UART/SCI(通用异步收发器/串行接口)的低成本串行通信协议,主要用于汽车车身网络中智能传感器和执行器之间的通信。 ... [详细]
  • BeautifulSoup4 是一个功能强大的HTML和XML解析库,它能够帮助开发者轻松地从网页中提取信息。本文将介绍BeautifulSoup4的基本功能、安装方法、与其他解析工具的对比以及简单的使用示例。 ... [详细]
  • 本文介绍了如何使用Maven命令对Spring Boot项目中的子模块进行独立打包,包括依赖树的查看、项目的运行和打包等基本操作。 ... [详细]
  • 深入理解异步多线程编程模型
    现代计算机系统中的CPU通过并行处理提高效率,但所谓的并发处理实际上是一种基于轮询的模拟并行。本文探讨了现代处理器如何通过虚拟化技术实现更高的并发性能,以及在.NET框架中如何有效利用线程和异步编程模式。 ... [详细]
  • 本文探讨了 Boost 库中的 Program Options 组件,这是一个强大的工具,用于解析命令行参数和配置文件。文章介绍了如何正确设置和使用该组件,包括处理复杂选项和负数值的方法。 ... [详细]
  • 解决 Pytest 运行时出现 FileNotFoundError 的方法
    在使用 Pytest 进行测试时,可能会遇到 FileNotFoundError 错误,提示无法找到指定的文件或目录。本文将探讨该错误的原因及解决方案。 ... [详细]
  • SpringBoot新手入门指南
    本文旨在为初次接触SpringBoot的开发者提供一份详细的入门指导,包括如何快速搭建并运行一个简单的SpringBoot应用。通过本文,读者将了解Maven项目的构建、必要的配置文件设置以及基本的应用开发流程。 ... [详细]
  • 本视频详细介绍了如何利用J2EE、JBPM 3.x/4.3、Flex流程设计器、jQuery以及授权认证机制构建高效的企业普及版贝斯OA及工作流管理系统。 ... [详细]
  • 本文介绍了如何在Windows操作系统中安装FFTW库,并详细说明了使用Visual Studio 2010进行4096点快速傅里叶变换(FFT)的步骤。包括下载预编译文件、生成库文件以及配置环境等关键环节。 ... [详细]
  • IEC60825激光产品安全标准详解
    随着激光技术在全球范围内的广泛应用,尤其是激光投影显示技术的兴起,了解和遵守相关的安全标准变得尤为重要。本文将详细介绍IEC60825激光产品安全标准及其重要性。 ... [详细]
author-avatar
allmon白_980
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有