博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ2154 Crash的数字表格
阅读量:5152 次
发布时间:2019-06-13

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

昨天看了的推导感觉很神!

今天想写结果又忘了怎么推的啦。。。233

 

1 /************************************************************** 2     Problem: 2154 3     User: rausen 4     Language: C++ 5     Result: Accepted 6     Time:5124 ms 7     Memory:127760 kb 8 ****************************************************************/ 9  10 #include 
11 #include
12 13 using namespace std;14 typedef long long ll;15 16 const int N = 1e7 + 5;17 const ll mod = 20101009;18 19 int n, m;20 int p[N], cnt;21 bool vis[N];22 ll g[N];23 24 void get_g(int N) {25 int i, j, k;26 g[1] = 1;27 for (i = 2; i <= N; ++i) {28 if (!vis[i]) p[++cnt] = i, g[i] = 1 - i;29 for (j = 1; j <= cnt; ++j) {30 if ((k = i * p[j]) > N) break;31 vis[k] = 1;32 if (i % p[j] == 0) {33 g[k] = g[i];34 break;35 }36 g[k] = g[i] * (1 - p[j]);37 }38 }39 for (i = 2; i <= N; ++i) g[i] *= i;40 for (i = 1; i <= N; ++i)41 (g[i] += g[i - 1]) %= mod;42 }43 44 ll calc(int n, int m) {45 int i, j;46 ll t1, t2, res = 0;47 for (i = 1, j = 0; i <= n; i = j + 1) {48 j = min(n / (n / i), m / (m / i));49 t1 = (1ll * (n / i) * (n / i + 1) / 2) % mod;50 t2 = (1ll * (m / i) * (m / i + 1) / 2) % mod;51 (res += ((g[j] - g[i - 1]) * ((t1 * t2) % mod)) % mod) %= mod;52 }53 return (res % mod + mod) % mod;54 }55 56 int main() {57 int i, T;58 scanf("%d%d", &n, &m);59 if (n > m) swap(n, m);60 get_g(m);61 printf("%lld\n", calc(n, m));62 return 0;63 }
View Code

 

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

你可能感兴趣的文章
Java中反射的学习与理解(一)
查看>>
nginx配置socket服务
查看>>
C语言初学 俩数相除问题
查看>>
B/S和C/S架构的区别
查看>>
[Java] Java record
查看>>
jQuery - 控制元素显示、隐藏、切换、滑动的方法
查看>>
postgresql学习文档
查看>>
Struts2返回JSON数据的具体应用范例
查看>>
js深度克隆对象、数组
查看>>
socket阻塞与非阻塞,同步与异步
查看>>
团队工作第二天
查看>>
linux一些基本操作-防火墙操作
查看>>
System类
查看>>
tableView
查看>>
Happy Great BG-卡精度
查看>>
Xamarin Visual Studio不识别JDK路径
查看>>
菜鸟“抄程序”之道
查看>>
Ubuntu下关闭防火墙
查看>>
TCP/IP 邮件的原理
查看>>
w3m常用快捷键
查看>>