[樱花]题解

题目背景

又到了一年樱花盛开的时节。Vani 和妹子一起去看樱花的时候,找到了一棵大大的樱花树,上面开满了粉红色的樱花。Vani 粗略估计了一下,一共有足足 n!n! 片花瓣。

Vani 轻柔地对她说:“你知道吗?这里面的一片花瓣代表着你,我从里面随机摘一片,能和你相遇的概率只有 1/n!1/n! 那么小。我该是多么的幸运,才让你今天这么近地站在我面前。相信我,我一定会把这亿万分之一的缘分变为永远。”

粉红的樱花漫天飞舞,妹子瞬间被 Vani 感动了。她轻轻地牵起了他的手,和他相依而坐。这时,她突然看到田野的尽头也长着两棵樱花树,于是慢慢地把头靠在 Vani 的肩上,在他耳边低语:“看到夕阳里的那两棵樱花树了吗?其中一棵树上的一片花瓣是你,另一棵树上的一片花瓣是我,如果有人从这棵摘下一片,从那棵采下一瓣,我们相遇的概率会不会正好是 1/n!1/n! 呢?”

Vani 的大脑飞速运作了一下,立即算出了答案。正要告诉妹子,她突然又轻轻地说:“以前你总是说我数学不好,但是这种简单的题我还是会算的。你看假如左边那棵树上有 xx 片花瓣,右边那个有 yy 片花瓣,那么我们相遇的概率不就是 1/x+1/y1/x+1/y 么,不过有多少种情况能使它正好可以等于 1/n!1/n! 呢?这个你就帮我算一下吧~”

显然,面对天然呆的可爱妹子,Vani 不但不能吐槽她的渣数学,而且还要老老实实地 帮她算出答案哦。

题目描述

输入格式

输入只有一行一个整数,表示 n。

输出格式

输出一行一个整数表示正整数解的组数模 109+710^9+7109+7 的值。

分析

首先,我们来看一下这个等式

1x+1y=1n!\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}x1​+y1​=n!1​

先通分化简一下

y+x=xyn!y + x=\frac{xy}{n!}y+x=n!xy​

然后,配一下方

n!2−n!(x+y)+xy=n!2n!^2-n!(x+y)+xy=n!^2n!2−n!(x+y)+xy=n!2

(x−n!)(y−n!)=n!2(x-n!)(y-n!)=n!^2(x−n!)(y−n!)=n!2

然后对比一下下面的等式

A⋅B=n!2A·B=n!^2A⋅B=n!2

可以发现,只要找到满足条件的A和B,就必会有满足条件的x和y。
于是,这道题就可以转换为n!2n!^2n!2可以分解为几个A·B的+形式。
进一步可以转换为n!2n!^2n!2中包含几个质数。
n!2n!^2n!2中质因子p的个数就等于1-n中每个数包含的质因数个数之和。在1-n中,p的倍数有n/p个。 p2p^2p2的倍数有n/p2n/p^2n/p2个
综上所述,题解就出来了

题解
#include <cstdio>
#define ll long long
const ll MAXN = 1e6 + 5, MOD = 1e9 + 7;
bool v[MAXN];
ll pr[MAXN];
ll n, ans = 1, cnt;
void Primes() {ll i, j;for(i = 2; i <= n; i++) {if(v[i])continue;pr[++cnt] = i;for(j = i; j <= n / i; j++)v[i * j] = 1;}
}
int main() {ll i, j;scanf("%lld", &n);Primes();for(i = 1; i <= cnt; i++) {ll k = 0;for(j = pr[i]; j <= n; j *= pr[i])k += n / j;ans *= (k * 2 + 1) % MOD;ans %= MOD;}printf("%lld", ans % MOD);return 0;
}

(注意:要开long long)

洛谷 [樱花] 题解相关推荐

  1. 洛谷p1598题解记录

    洛谷p1598题解记录 对这道题来说,输入几行数据其实无所谓,判定时是按照是否输入EOF来决定输入是否结束的. 代码 #include <stdio.h>char numberCount[ ...

  2. 洛谷CF982B 题解

    谢谢管理员大大给过 优先队列速通大法 hello!我又来水体了,不过嘛,相对来说这道题普及-不算水. 那我们就来研究研究吧. 先看题目 题目传送门 F1:0分暴力 一开始我也是闲的没事想要弄一下暴力做 ...

  3. P3387 【模板】缩点 洛谷 java题解 连通图+拓扑排序

    传送门: P3387 [模板]缩点 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P3387 问题分析 首先为了节省 ...

  4. 洛谷P1001题解--zhengjun

    题目描述 输入两个整数 a,ba,ba,b,输出它们的和(∣a∣,∣b∣≤109|a|,|b |\le 10^9∣a∣,∣b∣≤109). 注意 PascalPascalPascal 使用intege ...

  5. 洛谷P1914题解——(本地测试AC但是交题爆零全WA)使用getchar();

    本题最大的坑在于: windows环境下的换行符为\r\n,linux环境的换行符为\n. 我们再来看看洛谷的部分OJ判题机数据和机制 常见"我在本地/xxOJ AC了.洛谷却不过" ...

  6. 洛谷P1425python题解

    #P1425 ##题解 s = input().split() a = int(s[0]) b = int(s[1]) c = int(s[2]) d = int(s[3])#total_time = ...

  7. 邮票面值设计java,[洛谷P1021][题解]邮票面值设计

    0.序 偶然被老师强迫刷到了这样一道题,正好亿年没写题解了,来此练练手+摸鱼. 1.概述 基本思路:DFS暴力枚举+DP验证. 先DFS出来一个序列,然后DP出所有面值用到的最少邮票数. 设\(f[i ...

  8. 洛谷P1014题解 [NOIP1999 普及组] Cantor 表

    原文地址:https://luvletter.blog.luogu.org/p1014-ti-jie P1014 [NOIP1999 普及组] Cantor 表 题目描述 现代数学的著名证明之一是 G ...

  9. 洛谷P1017题解 [NOIP2000 提高组] 进制转换

    原文地址:https://luvletter.blog.luogu.org/p1017-ti-jie P1017 [NOIP2000 提高组] 进制转换 题目描述 我们可以用这样的方式来表示一个十进制 ...

最新文章

  1. Xamarin.Forms特殊的视图BoxView
  2. android sqlite SQLiteDatabase 操作大全 不看后悔!必收藏!看后精通SQLITE (第二部分)...
  3. Java URL传参中文乱码问题
  4. linux dev urandom,Linux random vs urandom 区别
  5. html中加入超链接方式的汇总
  6. 转:精通JS正则表达式
  7. 存根类 测试代码 java_有关为旧版代码创建存根的更多信息–测试技术7
  8. 企业云桌面-01-安装第1台域控制器和第1台DNS服务器-011-DC01
  9. 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_17-页面查询接口定义-定义模型-需求分析和模型类...
  10. coverity java_coverity检测不到代码 | 学步园
  11. 物联网开发 无线433MHz安防报警系统 上
  12. basic计算机编程基础,计算机编程基础(Visual Basic)
  13. 笔记十五:研发管理者如何激励他人
  14. 这次的深夜食堂来到了清迈,只为寻找那些…
  15. 抛弃Eclipse!
  16. 设计模式之禅-访问者模式
  17. 网页设计技巧:如何做好图片与文字的配合?
  18. 牛客网——歪脖子树下的灯
  19. rdma-cq的创建与销毁
  20. Teamcenter云战略

热门文章

  1. matlab hsi颜色空间,RGB与HSI颜色空间互换函数(matlab)
  2. 工作过程中积累的书签(链接)
  3. oracle查看日期是第几周
  4. 5.22 使用筛选功能快速过滤指定条件的数据 [原创Excel教程]
  5. ORA-01017: invalid username/password; logon denied ORA-02063: 紧接着line(源于DBLINKN~~~)
  6. Laravel 的闪存数据(Flash Data)
  7. Java 选择视频文件对话窗口
  8. Pascal VOC转COCO格式亲测有效
  9. Windows常用必备软件整理,太全了,值得收藏
  10. yudian温控表a1温度怎么补偿_厦门宇电yudian温控表AI-516/516P型人工智能温度调节器控制器-恩莱自动化官网...