博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ2721 [Violet 5]樱花
阅读量:5241 次
发布时间:2019-06-14

本文共 1215 字,大约阅读时间需要 4 分钟。

先令n! = a:

1 / x + 1 / y = 1 / a  =>  x = y * a / (y - a)

再令 k = y - a:

于是x = a + a ^ 2 / k  =>  k | a ^ 2

故等价于求a ^2的约数个数

素数筛一下什么的就好了嘛

 

1 /************************************************************** 2     Problem: 2721 3     User: rausen 4     Language: C++ 5     Result: Accepted 6     Time:588 ms 7     Memory:2408 kb 8 ****************************************************************/ 9  10 #include 
11 12 using namespace std;13 typedef long long ll;14 const int N = 1000005;15 const int Cnt = 80005;16 const int mod = 1000000007;17 18 int n;19 bool F[N];20 int cnt, p[Cnt], c[Cnt];21 ll ans = 1;22 23 int main() {24 int i, j, t;25 scanf("%d\n", &n);26 for (i = 2; i < N; ++i) {27 if (!F[i]) p[++cnt] = i;28 for (j = 1; j <= cnt && p[j] * i < N; ++j) {29 F[p[j] * i] = 1;30 if (p[j] % i == 0) break;31 }32 }33 for (i = 1; i <= cnt; ++i)34 for (j = p[i]; j <= n; j += p[i])35 for (t = j; t % p[i] == 0; t /= p[i]) ++c[i];36 for (i = 1; i <= cnt; ++i)37 (ans *= (c[i] << 1 | 1)) %= mod;38 printf("%lld\n", ans);39 return 0;40 }
View Code

 

转载于:https://www.cnblogs.com/rausen/p/4138233.html

你可能感兴趣的文章
servlet-01
查看>>
关于C语言交换两个数的实现方法以及个人心得
查看>>
值类和引用类的区别
查看>>
J2EE的体系结构
查看>>
CocoaPods的安装和使用
查看>>
第六周学习总结
查看>>
使窗口订在桌面上,显示桌面也不会最小化
查看>>
Android批量图片载入经典系列——使用LruCache、AsyncTask缓存并异步载入图片
查看>>
基于 OAuth 安全协议的 Java 应用编程1
查看>>
BroadcastReceiver(接收广播)
查看>>
安卓自己定义日历控件
查看>>
android下文件下载
查看>>
华为-on练习--身高找到最好的二人
查看>>
【从0开始Tornado网站】主页登录和显示的最新文章
查看>>
python文本文件,生成指定的文件格式
查看>>
HOG特征-理解篇
查看>>
hdu1172猜数字
查看>>
Designing for iOS 7
查看>>
深入浅出—闭包(整理篇)适合新手
查看>>
单独卸载vs2010帮助文档HelpView之后的独立安装教程
查看>>