博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 5312 Sequence(三角形数)
阅读量:6408 次
发布时间:2019-06-23

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

题意:通式为3*i*(i-1)+1(n>=1)的数列中每个数可用若干次,求构成给定n所需的最小个数;

思路:

       设构成n所需个数为x,则n=3*1*(1-1)+3*2*(2-1)+...+3*x*(x-1)+x;当时推到这一步就没有再做下去了;

       n*(n-1)/2或n*(n+1)/2形式表示的数为三角形数;

       然后整理得n=6*(sigma((i*(i-1)/2))+x(i*(i-1)为偶数);

       也就是说n%6即为所求结果,当n%6=1,2时特判一下是否能找到满足条件的数;

二分查找:(手动二分)(STL二分)

#include
#include
#include
using namespace std;int t,n,m,mark;int num[500010];void pre(){ for(int i=1;i<20000;i++){ num[i]=3*i*(i-1)+1; }}/*int seek(int x){ int k=lower_bound(num,num+20000,x)-num; return num[k]==x;}*/int seek(int x){ int l=0,r=20000; while(l<=r) { int mid=(l+r)/2; if(num[mid]==x) return 1; else if(num[mid]
x) r=mid-1; } return 0;}int main(){ int i,j,k,temp; pre(); while(scanf("%d",&t)!=EOF) { while(t--) { scanf("%d",&n); temp=(n-1)%6+1; mark=0; if(temp>2) printf("%d\n",temp); else{ if(temp==1){ if(seek(n)) printf("1\n"); else printf("7\n"); continue; } else{ for(i=1;num[i]*2<=n;i++){ if(seek(n-num[i])){ mark=1;break; } } if(mark) printf("2\n"); else printf("8\n"); } } } } return 0;}

STL中map映射:

#include
#include
#include
#include
using namespace std;int t,n,m,mark;int num[500010];map
mm;void pre(){ for(int i=1;i<20000;i++){ num[i]=3*i*(i-1)+1; mm[num[i]]=i; }}int main(){ int i,j,k,temp; pre(); while(scanf("%d",&t)!=EOF) { while(t--) { scanf("%d",&n); temp=(n-1)%6+1; mark=0; if(temp>2) printf("%d\n",temp); else{ if(temp==1){ if(mm.count(n)) printf("1\n"); else printf("7\n"); continue; } else{ for(i=1;num[i]*2<=n;i++){ if(mm.count(n-num[i])){ mark=1;break; } } if(mark) printf("2\n"); else printf("8\n"); } } } } return 0;}

 

转载于:https://www.cnblogs.com/dashuzhilin/p/4679363.html

你可能感兴趣的文章
pyqt 滚动条 美化_Pyqt5 关于流式布局和滚动条的综合使用示例代码
查看>>
51单机片 编译hex_单片机爬坑记-05-编译环境(完)
查看>>
java 正则表达式 img_Java正则表达式获得html字符串里的<img src=""/> 中的url列表
查看>>
java 文件crc校验_一个获取文件crc32校验码的简洁的java类 | 学步园
查看>>
java flatmapfunction_Java8 Stream flatmap中间操作用法解析
查看>>
java rmi spring 4.0_Java Spring RMI一些尝试
查看>>
JAVA怎么连接华为的HDFS系统_JAVA-API操作HDFS文件系统(HDFS核心类FileSystem的使用)...
查看>>
java牛客网四则运算_数据库刷题—牛客网(51-61)
查看>>
Java get set6_JDK6的新特性(转)
查看>>
java发送邮件 不登陆_Java邮件到Exchange Server“不支持登录方法”
查看>>
编程学习初体验(5. 如何自学编程)(2)
查看>>
思科ISR G1与ISR G1C的区别
查看>>
利用perl提取web配置文件中的域名对应的路径
查看>>
Centos5上安装JRE和LUMAQQ
查看>>
关于监控工具的主动发起性能测试
查看>>
我的友情链接
查看>>
OpenSSL学习(十六):基础-指令rand
查看>>
Apache+tomcat实现高可用WEB集群
查看>>
KeyMob致力于打造国内领先的移动广告平台
查看>>
oracle的基本语法
查看>>