HDU4466 Triangle
题意:给一个长为N的铁丝,问你有几种方法将其划分为若干段,使得每一段都能围成一个边长为整数的三角形,并且围成的三角形都相似
思路其实很明显,三角形的周长必定是N的约数,那么答案就是周长C能围城的三角形的数量*[N/C]的拆分数的和。问题是这两个东西怎么求。后者比较简单,打个表就能发现它是2的幂次。前者讨论三条边的关系后可以得出递归式:f[i]=f[i-2]+i/3-i/4。之后容斥一下即可。
#include<bits/stdc++.h> using namespace std; #define MAXN 5000000+10 #define MODD 1000000007 const int maxn=MAXN-10; int n,tot,f[MAXN],pw[MAXN]={1},d[MAXN]; void init(){for(int i=1;i<=maxn;i++)pw[i]=pw[i-1]*2,pw[i]%=MODD; } int main(){init();int Case=0;while(~scanf("%d",&n)){Case++;for(int i=2;i<=maxn;i++)f[i]=f[i-2]+i/3-i/4,f[i]%=MODD;tot=0; for(int i=1;i*i<=n;i++)if(n%i==0){if(i*i!=n){d[++tot]=i;d[++tot]=n/i;}else d[++tot]=i;}sort(d+1,d+tot+1);for(int i=1;i<=tot;i++)for(int j=1;j<i;j++)if(d[i]%d[j]==0)f[d[i]]-=f[d[j]],f[d[i]]=(f[d[i]]+MODD)%MODD;long long ans=0;for(int i=1;i<=tot;i++)ans=(ans+(long long)f[d[i]]*pw[n/d[i]-1]%MODD)%MODD;printf("Case %d: %lld\n",Case,ans); }return 0; }
转载于:https://www.cnblogs.com/NINGLONG/p/7685100.html
HDU4466 Triangle相关推荐
- HDU4466 Triangle 计数 容斥原理
原文链接https://www.cnblogs.com/zhouzhendong/p/HDU4466.html 题目传送门 - HDU4466 题意 多组数据,每次询问一个数 $n(n\leq 5\t ...
- [JS][C++]两题斐波那契数列:上台阶、triangle
上台阶 时间限制: 3000MS 内存限制: 589824KB 题目描述: 有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法? 注:规定从一级到一级有0种走法. ...
- 设计一个扩展自抽象类geometricobject的新的triangle类_C++ 接口(抽象类)
C++ 接口(抽象类) 接口描述了类的行为和功能,而不需要完成类的特定实现. C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念. 如果类中至 ...
- 帕斯卡三角形(Pascal's triangle)
// The following code is compiled on VC2005 // #include "stdafx.h" /*--------------------- ...
- [leedcode 118] Pascal's Triangle
Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5, Retu ...
- [LeetCode 120] - 三角形(Triangle)
问题 给出一个三角形,找出从顶部至底部的最小路径和.每一步你只能移动到下一行的邻接数字. 例如,给出如下三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 从顶部至底部的最 ...
- D - Triangle Partition HDU - 6300 sort(cmp)
D - Triangle Partition HDU - 6300 题解 由于三点不共线,且三角形不相交,则对坐标排序,输出 #include<bits/stdc++.h> using n ...
- Leetcode 118:Pascal's Triangle 杨辉三角
118:Pascal's Triangle 杨辉三角 Given a non-negative integer numRows, generate the first numRows of Pasca ...
- LintCode: Triangle
C++ 逆推 1 class Solution { 2 public: 3 /** 4 * @param triangle: a list of lists of integers. 5 * @ret ...
最新文章
- SQL2005合理的索引设计
- java 代码性能优化_Java代码性能优化(四)
- 《Android开发从零开始》——16.Service学习(2)
- 操作系统原理第二章:操作系统结构
- hb-550s计算机电源,XFX TS 550金牌电源拆解及电路分析
- php环形链表,PHP环形链表实现方法示例
- linux和安卓交互,Android中webview和js之间的交互及注意事项
- PAT A1096 质因子分解
- C++中常量指针,指针常量(const 和*)的使用方法和理解方法
- 深入浅出Dubbo剖析出视频教程了!!!
- 机器学习10-信用卡反欺诈模型
- 风尚云网学前端----HTML特殊字符编码对照表
- WPS正式推出了JS宏(WPS宏编辑器)如何切换会传统VB环境
- 51单片机学习笔记(一)软件及驱动安装
- python数据分析学习和建模的个人笔记(一)
- php阴阳万年历转换的接口,万年历接口
- 机器人开源项目KDL源码学习整理
- 什么是懦弱型人格?懦弱的原因和改变方法
- 入手评测 华硕灵耀Pro16和联想YOGA 16s哪个好
- MATLAB 复杂网络蓄意攻击代码
热门文章
- 普通话考试是从题库里抽吗_普通话考试的作品朗读是不是从60篇范文中抽取一篇?...
- Win 10装机量占据全球台式机总量的5%
- java动态字段的万能表单系统的构建
- 设置所有JSP页面,让IE9使用兼容模式运行
- msn空间中使用电子邮件发日志项和添加音乐播放模块
- 坐标变换中等幅值变换和等功率变换
- 一文速学数模-时序预测模型(四)二次指数平滑法和三次指数平滑法详解+Python代码实现
- 朝花夕拾---dubbo源码分析
- STM32使用DOS命令行下载——bat批处理一键傻瓜式操作
- 《阿里云代码安全白皮书》5个维度应对3类代码安全问题