sgu 246 分类: sgu 2015-06-27 13:40 20人阅读 评论(0) 收藏
2015-06-27 13:40
344 查看
一道好题。
把距离为 n+1的珠子连边,一共有 gcd(2∗n−1,n+1) 个联通块,
每个联通块的大小为 2∗n−1gcd(2∗n−1,n+1),
所以每个联通块最多可以有⌊(2∗n−1)gcd(2∗n−1,n+1)∗2⌋ 颗黑色珠子。
那么 ans=⌊(2∗n−1)gcd(2∗n−1,n+1)∗2⌋∗gcd(2∗n−1,n+1)+1
把距离为 n+1的珠子连边,一共有 gcd(2∗n−1,n+1) 个联通块,
每个联通块的大小为 2∗n−1gcd(2∗n−1,n+1),
所以每个联通块最多可以有⌊(2∗n−1)gcd(2∗n−1,n+1)∗2⌋ 颗黑色珠子。
那么 ans=⌊(2∗n−1)gcd(2∗n−1,n+1)∗2⌋∗gcd(2∗n−1,n+1)+1
#include<cstdio> #include<cstdlib> #include<ctime> #include<cmath> #include<cstring> #include<map> #include<string> #include<stack> #include<queue> #include<utility> #include<iostream> #include<algorithm> int gcd(int a,int b) { return b?gcd(b, a%b):a; } int main() { int n, m, cnt, L; #ifndef ONLINE_JUDGE freopen("sgu246.in","r",stdin); freopen("sgu246.out","w",stdout); #endif std::cin >> m; n = ((unsigned int)m + 1)>>1; cnt = gcd(m, n+1), L = m/cnt; std::cout << (long long)cnt*(L>>1)+1; #ifndef ONLINE_JUDGE fclose(stdin); fclose(stdout); #endif return 0; }
相关文章推荐
- 模板方法
- 深入浅出NodeJS笔记(二)
- js encodeURI encodeURIComponent escape 方法的区别
- SQLite 解决:Could not load file or assembly 'System.Data.SQLite ... 试图加载格式不正确的程序(转)
- SQL Server MySQL 中的 in 与 null
- 升级SQL2005到2008过程中遇到的问题
- Maven —— 在MyEclipse中不能正常运行
- springmvc ajax请求处理跳转问题
- [.NET领域驱动设计实战系列]专题十一:.NET 领域驱动设计实战系列总结
- 医疗dcm格式图像解析成bmp格式图片
- mysql int(3)与int(11)的区别
- bzoj 1010 (单调决策优化)
- 图片下载时遇到Can't create handler inside thread that has not called Looper.prepare()解决办法
- jquery学习之 过滤选择器
- Qt类使用记录
- 项目笔记:3.利用分布试存储(glusterfs)实现页面一致性
- 今日头条新闻阅读器
- 【后缀自动机】 CodeForces 235C Cyclical Quest
- Apriori算法的介绍
- Apriori算法的介绍