题意:给一个长为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相关推荐

  1. HDU4466 Triangle 计数 容斥原理

    原文链接https://www.cnblogs.com/zhouzhendong/p/HDU4466.html 题目传送门 - HDU4466 题意 多组数据,每次询问一个数 $n(n\leq 5\t ...

  2. [JS][C++]两题斐波那契数列:上台阶、triangle

    上台阶 时间限制: 3000MS 内存限制: 589824KB 题目描述: 有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法? 注:规定从一级到一级有0种走法. ...

  3. 设计一个扩展自抽象类geometricobject的新的triangle类_C++ 接口(抽象类)

    C++ 接口(抽象类) 接口描述了类的行为和功能,而不需要完成类的特定实现. C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念. 如果类中至 ...

  4. 帕斯卡三角形(Pascal's triangle)

    // The following code is compiled on VC2005 // #include "stdafx.h" /*--------------------- ...

  5. [leedcode 118] Pascal's Triangle

    Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5, Retu ...

  6. [LeetCode 120] - 三角形(Triangle)

    问题 给出一个三角形,找出从顶部至底部的最小路径和.每一步你只能移动到下一行的邻接数字. 例如,给出如下三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 从顶部至底部的最 ...

  7. D - Triangle Partition HDU - 6300 sort(cmp)

    D - Triangle Partition HDU - 6300 题解 由于三点不共线,且三角形不相交,则对坐标排序,输出 #include<bits/stdc++.h> using n ...

  8. Leetcode 118:Pascal's Triangle 杨辉三角

    118:Pascal's Triangle 杨辉三角 Given a non-negative integer numRows, generate the first numRows of Pasca ...

  9. LintCode: Triangle

    C++ 逆推 1 class Solution { 2 public: 3 /** 4 * @param triangle: a list of lists of integers. 5 * @ret ...

最新文章

  1. SQL2005合理的索引设计
  2. java 代码性能优化_Java代码性能优化(四)
  3. 《Android开发从零开始》——16.Service学习(2)
  4. 操作系统原理第二章:操作系统结构
  5. hb-550s计算机电源,XFX TS 550金牌电源拆解及电路分析
  6. php环形链表,PHP环形链表实现方法示例
  7. linux和安卓交互,Android中webview和js之间的交互及注意事项
  8. PAT A1096 质因子分解
  9. C++中常量指针,指针常量(const 和*)的使用方法和理解方法
  10. 深入浅出Dubbo剖析出视频教程了!!!
  11. 机器学习10-信用卡反欺诈模型
  12. 风尚云网学前端----HTML特殊字符编码对照表
  13. WPS正式推出了JS宏(WPS宏编辑器)如何切换会传统VB环境
  14. 51单片机学习笔记(一)软件及驱动安装
  15. python数据分析学习和建模的个人笔记(一)
  16. php阴阳万年历转换的接口,万年历接口
  17. 机器人开源项目KDL源码学习整理
  18. 什么是懦弱型人格?懦弱的原因和改变方法
  19. 入手评测 华硕灵耀Pro16和联想YOGA 16s哪个好
  20. MATLAB 复杂网络蓄意攻击代码

热门文章

  1. 普通话考试是从题库里抽吗_普通话考试的作品朗读是不是从60篇范文中抽取一篇?...
  2. Win 10装机量占据全球台式机总量的5%
  3. java动态字段的万能表单系统的构建
  4. 设置所有JSP页面,让IE9使用兼容模式运行
  5. msn空间中使用电子邮件发日志项和添加音乐播放模块
  6. 坐标变换中等幅值变换和等功率变换
  7. 一文速学数模-时序预测模型(四)二次指数平滑法和三次指数平滑法详解+Python代码实现
  8. 朝花夕拾---dubbo源码分析
  9. STM32使用DOS命令行下载——bat批处理一键傻瓜式操作
  10. 《阿里云代码安全白皮书》5个维度应对3类代码安全问题