bzoj2005
2015-10-09 19:37
260 查看
参考代码:
http://blog.csdn.net/popoqqq/article/details/39924877 http://blog.csdn.net/z690933166/article/details/11844077
这道题首先要推出每个点 (i,j) 所消耗的能量就是 (gcd(i,j)-1)*2+1,所以可以把所有最大公约数相同的合并起来,那么接下来就是枚举最大公约数,最后就是怎样求出最大公约数为某个特定的值的对数,可以用容斥。
2015.10.27:
给定 x,y,求 a<=x,b<=y,gcd(a,b)=d 的对数,有以下几种方法:
1. http://www.docin.com/p-826560286.html (容斥原理,加一点改进,但是与本题中所用的容斥稍有不同)
2.本题所用的容斥原理。
看到莫比乌斯函数一个超级好的证明:http://www.zhihu.com/question/23764267
(第一次遭遇命运的时候我们措手不及,所以在命运面前惨败,第二次我们已经全副武装。 ——江南 《龙族》)
http://blog.csdn.net/popoqqq/article/details/39924877 http://blog.csdn.net/z690933166/article/details/11844077
这道题首先要推出每个点 (i,j) 所消耗的能量就是 (gcd(i,j)-1)*2+1,所以可以把所有最大公约数相同的合并起来,那么接下来就是枚举最大公约数,最后就是怎样求出最大公约数为某个特定的值的对数,可以用容斥。
2015.10.27:
给定 x,y,求 a<=x,b<=y,gcd(a,b)=d 的对数,有以下几种方法:
1. http://www.docin.com/p-826560286.html (容斥原理,加一点改进,但是与本题中所用的容斥稍有不同)
2.本题所用的容斥原理。
看到莫比乌斯函数一个超级好的证明:http://www.zhihu.com/question/23764267
(第一次遭遇命运的时候我们措手不及,所以在命运面前惨败,第二次我们已经全副武装。 ——江南 《龙族》)
#include<stdio.h> #include<string.h> #include<iostream> using namespace std; #define N 100010 long long int gcdcou ; int main(){ long long int n,m; long long int ans; while(scanf("%lld%lld",&n,&m)!=EOF){ ans=0; for(int i=min(n,m);i>=1;i--){ gcdcou[i]=(n/i)*(m/i); for(int j=i+i;j<=min(n,m);j=j+i){ gcdcou[i]-=gcdcou[j]; } ans+=((i-1)*2+1)*gcdcou[i]; } printf("%lld\n",ans); } return 0; }
相关文章推荐
- 第四周实践项目5--循环双链表应用
- NIOS II IDE编译出错:no file name for '-include'。Quartus ii中的.tcl文件run不起来
- 数组对称判断方法
- bzoj2005
- Android中的距离单位
- android集成微信支付(全是坑)
- junit 的classpath文件
- 51nod 01背包(DP)
- 编写Win32 lib时使用CString的方法
- 二分法查找
- 隐藏属性
- 正则表达式学习(基础篇)(原创)
- CS224D Deep Learning for NLP lecture2
- Android五大布局
- 《软件需求模式》阅读笔记一
- 20151009 C# 第一篇 程序编写规范
- INSTALL_FAILED_INSUFFICIENT_STORAGE.
- 浅谈技术管理(转载,讲的非常不错,技术和产品都值得一看)
- 黑马程序员-------Foundation框架 NSRange
- PHP程序‘猿’必备的七种武器