【NOIP2016提高A组模拟9.4】快速荷叶叶变换
来源:互联网 发布:网络策划推广公司 编辑:程序博客网 时间:2024/04/28 09:01
题目
Description
Input
一行,包含两个整数N,M。
Output
1个整数,FHT(N,M) mod 1000000007的值。
Sample Input
3 4
Sample Output
1
Data Constraint
40%:n,m<=1000
60%:n,m<=
100%:n,m<=
比赛时の想法
一开始看到这道题,就想到了60分的做法,然后就开始想log级别或者是根号级别的做法,过了几分钟,突然想到了一个根号级别的做法:
我们设q=n mod i,p=n div i; 那么我们可以分情况进行讨论:
1:
2:对于剩下的还没有处理的数,他们的p值都是<=
正解
↑
贴代码
const md=1000000007;var n,m,i,j,k:longint; x,y,ans,tot,l,r,mid:int64;procedure init;begin readln(n,m); k:=trunc(sqrt(n)); for i:=1 to n do begin if n div i<=k then break; ans:=ans+(n mod i); end; ans:=ans mod md;end;begin init; if (n=1) or (m=1) then begin writeln(0); halt; end; for i:=k downto 1 do begin l:=1; r:=n; while l<r do begin mid:=(l+r) div 2; if n div mid>=i then l:=mid+1 else r:=mid; end; x:=1; y:=l; while x<y do begin mid:=(x+y) div 2; if n div mid>i then x:=mid+1 else y:=mid; end; l:=x; while n div l<=i do dec(l); inc(l); while n div r<i do dec(r); if n mod l=0 then inc(l); x:=n mod l; if n mod r=0 then dec(r); y:=n mod r; mid:=r-l+1; if l>r then continue; ans:=(ans+((x+y)*mid) div 2) mod md; end; k:=trunc(sqrt(m)); for i:=1 to m do begin if m div i<=k then break; tot:=tot+(m mod i); end; tot:=tot mod md; n:=m; for i:=k downto 1 do begin l:=1; r:=m; while l<r do begin mid:=(l+r) div 2; if m div mid>=i then l:=mid+1 else r:=mid; end; x:=1; y:=l; while x<y do begin mid:=(x+y) div 2; if m div mid>i then x:=mid+1 else y:=mid; end; l:=x; while m div l<=i do dec(l); inc(l); while m div r<i do dec(r); if n mod l=0 then inc(l); x:=m mod l; if m mod r=0 then dec(r); y:=m mod r; mid:=r-l+1; if l>r then continue; tot:=(tot+((x+y)*mid) div 2) mod md; end; ans:=ans*tot; writeln(ans mod md);end.
0 0
- 【NOIP2016提高A组模拟9.4】快速荷叶叶变换
- 快速荷叶叶变换 【NOIP2016提高A组模拟9.4】
- 【JZOJ4755】【NOIP2016提高A组模拟9.4】快速荷叶叶变换
- NOIP2016提高组 快速荷叶叶变换
- 【NOIP提高组模拟】快速荷叶叶变换
- 【NOIP模拟】快速荷叶叶变换
- 【NOIP2016提高A组模拟9.4】幻象
- 幻象【NOIP2016提高A组模拟9.4】
- 【jzoj4755】【快速荷叶叶变换】
- Jzoj4755 快速荷叶叶变换
- 【NOIP2016提高A组模拟9.4】树上摩托
- 树上摩托【NOIP2016提高A组模拟9.4】
- 【JZOJ4756】【NOIP2016提高A组模拟9.4】幻象
- 【NOIP2016提高A组模拟7.15】立方体
- 计数【NOIP2016提高A组模拟7.15】
- 【NOIP2016提高A组模拟7.17】寻找
- 【NOIP2016提高A组模拟7.17】寻找
- 【NOIP2016提高A组模拟7.17】锦标赛
- 关于 模式识别的 一些题目
- 碎片开发常见错误分析:Binary XML file line #5 : Error inflating classfragment
- 汉化Birt的WEB操作界面
- CSS如何实现文字隐藏 超出文字隐藏 鼠标移入显示
- 安装jdk后出现bash: ./java: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录
- 【NOIP2016提高A组模拟9.4】快速荷叶叶变换
- oracle pl/sql 编程基础
- Filter的url匹配问题总结(url-pattern配置)
- Delphi 组件开发实现类 编辑框
- 软件测试培训班
- linux动态库so调用外部so,运行时出现undefined symbol
- java.lang.IllegalStateException: No modifications are allowed to a locked ParameterMap
- hibernate分页返回数据,类型不匹配报错
- 判断一个变量是不是数组Array类型的方法