Link

  https://jzoj.net/senior/#main/show/3456

Description

  终于,在众亲们的奋斗下,最终boss 恭介被关进了库特设计的密室。正当她们松了一口气时,这个世界却发生了天翻覆地的变化:地面开始下沉,天空开始变成血红色,海水沸腾……一幅世界末日的图景。美鱼从她手中的古籍《若山牧水诗歌集》中发现了原因:白鸟は かなしからずや 空の青 海のあをにも 染まずただよふ 。大(xia)意(shuo)就是狡猾的恭介在创造这个世界的时候就篡改了法则。而这个法则的起源,就是一只生死之间的猫。这个猫被关在一个黑盒子里,盒子里有两个毒气罐,如果有任意一个毒气罐被打开那么猫将会被杀死,法则也能得到纠正。然而外界能控制的仅仅是这两个毒气罐被打开的概率。假设第一个毒气罐被打开的概率为1/x,第二个毒气罐为1/y(x,y 为正整数),那么当两个概率和为1/(n!)时,猫将会被莫名其妙地杀死。现在美鱼想知道,有多少对(x,y)可以让猫被莫名其妙杀死。

Solution

  其实,题目大意可以直接转化成如下一句精炼的话。

  

30分

  显然,因为n太小了,最大只有6,打表都行了,反正我考试时n=6也超时。。

60分

  正解+傻到没打高精度,或者打表。

100分

  我们分解一下题目给出的式子,详见下面过程及讲解

  合并左边的分式可得

  

  通过交叉相乘可得

  

  通过乘法分配律的逆运算得

  

  移项得

  

  通过合并式子得

  

  移项得

  

  分解到这里,我们可以推出下面的式子

  

  x同样可以这样证出来,我考试一直在证这个,其实还是有些乱用的,但是后面才是重点

  根据数学归纳,可以得知,x或y的最大值为n!(n!+1),虽然这没什么卵用

  我们枚举y来确定x,显然

  

  我们将y表示为一般的形式,即y=n!+k(k代表任意符合条件的数),带入前面的式子中,得

  

  合并同类项化简得  

  

  因为x是整数,所以n!n!+kn!必定为k的倍数,因为kn!是k的倍数,故不必考虑第二个多项式,我们只要考虑第一个多项式,即满足如下条件

  

  这样,答案就转化成求n!n!的约数个数了

  快速求n!的约数个数和分解质因子出来的式子(包括质因子和其指数),可以看我写的博客,链接如下

  (当成这里是有链接)

  显然,我们知道一个数分解质因子出来的式子,那么这个数的平方的式子同样可以得出来,不过就是指数都乘2罢了

  约数个数的公式就不用说了吧,小学一年级我就会了。

  这里算约数个数需要高精度。

  因为有时间限制,所以高精度要加常数优化,诸如低精度乘高精度,压位,延迟去乘法等

  问题迎刃而解了,考试时我以为很屌很屌,实际上真的很屌很屌,我数学不好,特别是这种分解的然后用的数代替成一般形式的,Orz lyl,dyp,wmz大佬

Code

var
now:int64;
n,i,j,num,tot:longint;
a:array[..] of int64;
bz:array[..] of ..;
procedure gg(x:int64);
var
i,len:longint;
begin
for i:= to a[] do
a[i]:=a[i]*x; len:=a[];
i:=; while i<=len do
begin
a[i+]:=a[i+]+a[i] div ;
a[i]:=a[i] mod ; if (a[i+]>) and (i+>len) then
inc(len); inc(i);
end; a[]:=len;
end;
begin
readln(n); a[]:=;
a[]:=;
now:=; for i:= to n do
if bz[i]= then
begin
for j:= to n div i do
bz[i*j]:=; num:=n;
tot:=; while num>=i do
begin
num:=num div i; inc(tot,num);
end; tot:=tot*+; if now*tot> then
begin
gg(now); now:=;
end; now:=now*tot; end; if now<> then
gg(now); write(a[a[]]); for i:=a[]- downto do
if a[i]>= then write(a[i]) else
if a[i]>= then write('',a[i]) else
if a[i]>= then write('',a[i]) else
if a[i]>= then write('',a[i]) else
if a[i]>= then write('',a[i]) else
if a[i]>= then write('',a[i]) else
if a[i]>= then write('',a[i]) else
if a[i]>= then write('',a[i]) else
if a[i]>= then write('',a[i]) else
write('',a[i]);
end.

[jzoj]3456.【NOIP2013模拟联考3】恭介的法则(rule)的更多相关文章

  1. JZOJ【NOIP2013模拟联考14】隐藏指令

    JZOJ[NOIP2013模拟联考14]隐藏指令 题目 Description 在d维欧几里得空间中,指令是一个长度为2N的串.串的每一个元素为d个正交基的方向及反方向之一.例如,d = 1时(数轴) ...

  2. JZOJ 3493. 【NOIP2013模拟联考13】三角形

    3493. [NOIP2013模拟联考13]三角形(triangle) (File IO): input:triangle.in output:triangle.out Time Limits: 10 ...

  3. JZOJ 3487. 【NOIP2013模拟联考11】剑与魔法(dragons)

    3487. [NOIP2013模拟联考11]剑与魔法(dragons) (Standard IO) Time Limits: 1000 ms  Memory Limits: 131072 KB  De ...

  4. JZOJ 3470. 【NOIP2013模拟联考8】最短路(path)

    470. [NOIP2013模拟联考8]最短路(path) (Standard IO) Time Limits: 1000 ms  Memory Limits: 262144 KB  Detailed ...

  5. JZOJ 3463. 【NOIP2013模拟联考5】军训

    3463. [NOIP2013模拟联考5]军训(training) (Standard IO) Time Limits: 2000 ms  Memory Limits: 262144 KB  Deta ...

  6. JZOJ 3462. 【NOIP2013模拟联考5】休息(rest)

    3462. [NOIP2013模拟联考5]休息(rest) (Standard IO) Time Limits: 1000 ms  Memory Limits: 262144 KB  Detailed ...

  7. JZOJ 3461. 【NOIP2013模拟联考5】小麦亩产一千八(kela)

    3461. [NOIP2013模拟联考5]小麦亩产一千八(kela) (Standard IO) Time Limits: 1000 ms  Memory Limits: 262144 KB  Det ...

  8. 【NOIP2013模拟联考7】OSU

    [NOIP2013模拟联考7]OSU 描述 Description osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: 一共有n次操作,每次操作只有成功与失败之分, ...

  9. [jzoj]3468.【NOIP2013模拟联考7】OSU!(osu)

    Link https://jzoj.net/senior/#main/show/3468 Description osu 是一款群众喜闻乐见的休闲软件. 我们可以把osu的规则简化与改编成以下的样子: ...

随机推荐

  1. C# 执行DOS命令和批处理

    在项目开发中,有时候要处理一些文件,比如视频格式的转换,如果用C开发一套算法,再用C#调用,未免得不偿失!有时候调用现有的程序反而更加方便.今天就来说一下C#中如何调用外部程序,执行一些特殊任务. 这 ...

  2. 基于ionic4、cordova搭建android开发环境

    前颜(yan)最近公司有一个项目需求是利用h5进行跨平台开发,这里所说的跨平台开发指的是:将h5代码利用某种方式或工具环境进行打包,最后生成android的apk以及ios的ipa. 本文只讲解and ...

  3. DirectX11--深入理解HLSL常量缓冲区打包规则

    HLSL常量缓冲区打包规则 DirectX11 With Windows SDK完整目录 欢迎加入QQ群: 727623616 可以一起探讨DX11,以及有什么问题也可以在这里汇报. 尽管打包规则并不 ...

  4. Git Gerrit使用

    Git Gerrit 操作都用 git bash操作: 如果想用 cmd 或者 PowerShell,系统环境变量 Path 添加 Git 安装路径,如: C:\Program Files (x86) ...

  5. [物理学与PDEs]第1章习题5 偶极子的电场强度

    试计算由习题 4 给出的电偶极子的所形成的电场的电场强度. 解答: $$\beex \bea {\bf E}(P)&=\cfrac{1}{4\pi\ve_0} \sez{\cfrac{-q}{ ...

  6. [物理学与PDEs]第1章第4节 电磁能量和电磁动量, 能量、动量守恒与转化定律 4.3 电磁能量 (动量) 密度, 电磁能量流 (动量流) 密度

    1. 电磁能量密度: $\cfrac{1}{2}\sex{\ve_0E^2+\cfrac{1}{\mu_0}B^2}$. 2. 电磁能量流密度向量: ${\bf S}=\cfrac{1}{\mu_0} ...

  7. MySQL5.6.39修改密码

    5.6.39 苹果->系统偏好设置->最下边点mysql 在弹出页面中 关闭mysql服务(点击stop mysql server) step2: 进入终端输入:cd /usr/local ...

  8. 简单管理员权限与几个常用的PHP 常用函数,in_array(),explode(),implode(),join(),str_replace()

    先把今天要用的几个函数罗列出来: //explode()转换成数组,implode()转化成字符串 explode("分隔符",需要被分割的字符串或变量) $priv=" ...

  9. Arduino传感器学习目录

    Arduino-接口图  在Windows上安装Arduino-IDE  函数库和程序架构介绍   Arduino语法-变量和常量 Arduino常用的数据类型以及转换  Arduino—运算符   ...

  10. 【linux】基础知识

    为什么学习Linux? 服务器大多数都是linux操作系统,学习[上线][运维]是我们前端开发工程师的必备技能.Linux系统和maxOS系统十分类似,所以推荐大家使用max电脑工作. Linux的版 ...