HDU--4099
题目:
Revenge of Fibonacci
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4099
分析:字典树的应用。在求Fibonacci的前40位时,可以只记录下前60位,舍去后面的,这样不会因为进位而产生误差。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<string>
#include<algorithm>
#include<map>
#define maxn 6000005
using namespace std;
char s[],s1[],s2[],s3[];
char c[];
int ans=;
void padd(char *a,char *b,char *back)
{
int i,j,k,x,y,z,up;
i=strlen(a)-;
j=strlen(b)-;
k=;
up=;
while(i>=||j>=)
{
if(i<)x=;
else x=a[i]-'';
if(j<)y=;
else y=b[j]-'';
z=x+y+up;
c[k++]=z%+'';
up=z/;
i--;
j--;
}
if(up>)c[k++]=up+'';
for(i=;i<k;i++)back[i]=c[k--i];
back[k]='\0';
} struct Trie
{
Trie *next[];
int count;
};
Trie *root,memory[maxn];
int cnt=;
Trie* build()
{
Trie *p=&memory[cnt++];
p->count=-;
for(int i=;i<;i++)
p->next[i]=NULL;
return p;
}
void insert_node(char *s,int nn)
{
Trie *p=root;
int i,k;
for(i=;s[i]&&i<;i++)
{
k=s[i]-'';
if(p->next[k]==NULL)
p->next[k]=build();
p=p->next[k];
if(p->count==-)p->count=nn;
}
}
bool search(char *s)
{
Trie *p=root;
int i,k;
for(i=;s[i];i++)
{
k=s[i]-'';
if(p->next[k]==NULL)return false;
else p=p->next[k];
}
ans=p->count;
return true;
}
void init()
{
s1[]='';s1[]='\0';
s2[]='';s2[]='\0';
insert_node(s1,);
insert_node(s2,);
for(int i=;i<=;i++)
{
int len1=strlen(s1),len2=strlen(s2);
if(len2>)
{
s2[len2-]='\0';
s1[len1-]='\0';
}
padd(s1,s2,s3);
strcpy(s1,s2);
strcpy(s2,s3);
insert_node(s3,i);
}
}
int main()
{
int T,cas=;
root=build();
init();
scanf("%d",&T);
while(T--)
{
scanf("%s",s);
bool flag=search(s);
printf("Case #%d: ",cas++);
if(!flag)puts("-1");
else printf("%d\n",ans-);
}
return ;
}
HDU--4099的更多相关文章
- HDU 4099 Revenge of Fibonacci (数学+字典数)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4099 这个题目就是一个坑或. 题意:给你不超过40的一串数字,问你这串数字是Fibonacci多少的开头 ...
- (字典树)Revenge of Fibonacci -- HDU -- 4099
链接: http://acm.hdu.edu.cn/showproblem.php?pid=4099 要用c++交哦, G++ MLE 不是很懂,先粘上慢慢学习 代码: #include<std ...
- hdu 4099 Revenge of Fibonacci 字典树+大数
将斐波那契的前100000个,每个的前40位都插入到字典树里(其他位数删掉),然后直接查询字典树就行. 此题坑点在于 1.字典树的深度不能太大,事实上,超过40在hdu就会MLE…… 2.若大数加法时 ...
- HDU 4099 Revenge of Fibonacci(高精度+字典树)
题意:对给定前缀(长度不超过40),找到一个最小的n,使得Fibonacci(n)前缀与给定前缀相同,如果在[0,99999]内找不到解,输出-1. 思路:用高精度加法计算斐波那契数列,因为给定前缀长 ...
- hdu 4099 Revenge of Fibonacci 大数+压位+trie
最近手感有点差,所以做点水题来锻炼一下信心. 下周的南京区域赛估计就是我的退役赛了,bless all. Revenge of Fibonacci Time Limit: 10000/5000 MS ...
- hdu 4099 Revenge of Fibonacci Trie树与模拟数位加法
Revenge of Fibonacci 题意:给定fibonacci数列的前100000项的前n位(n<=40);问你这是fibonacci数列第几项的前缀?如若不在前100000项范围内,输 ...
- HDU 4099 大数+Trie
Revenge of Fibonacci Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 204800/204800 K (Java/ ...
- HDU 4099 Revenge of Fibonacci Trie+高精度
Revenge of Fibonacci Problem Description The well-known Fibonacci sequence is defined as following: ...
- hdu 4099 字典树 + 斐波那契
题意: 给你一个串(最长40位)问你这个串是斐波那契F(n) n <= 99999中的那个数的前缀,如果存在多个输出最小的n否则输出-1. 思路: 给的串最长40位,那 ...
- HDOJ 2111. Saving HDU 贪心 结构体排序
Saving HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
随机推荐
- Mysql DataPacketTooBigException异常处理
在本地上运行好好,然后发布到服务器上去, 总是报错,后来查了一下日志,得到了如下的错误日志: [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] Pa ...
- yarn (npm) 切换设置镜像源
设置镜像源 1.查看一下当前源 yarn config get registry 2.切换为淘宝源 yarn config set registry https://registry.npm.taob ...
- 常用DB2命令
建库 db2 territory CN on 建库到指定位置 db2 create database OADB on D: using codeset GBK territory CN 列出所有数据库 ...
- Daily Scrum9 11.13
昨天的任务已完成. 今日任务: 姓名 今日任务 时长 徐钧鸿 测试SQL包里的代码 2h 张艺 继续搭建还没搭建完的框架 修复bug 2h 黄可嵩 继续进行搜索响应编写 2h 徐方宇 搭建框架 修改b ...
- Hive问题
今天一直遇到一个问题: 在查询最热10个关键词时候总是报错,下图为报错最下面 一直关注着failed的内容,头疼了一天......... 结果实验室老哥给指出问题,是yarnException报错, ...
- Structs2笔记①--structs的背景、structs2框架的意义、第一个helloworld
Struts2的背景 由出色稳定的框架struts1和webwork框架整合而来的 吸取了两大框架的优点 提高了开发的效率和规范性 更好的实现了MVC架构 解除了与servlet的强耦合性 使用str ...
- 假如 GFW 遇上 ML
我稍微试了一下梯子 我稍微试了一下梯子,在有梯子的情况下进行google搜索,然后wireshark 抓包.所有问题跃然纸上 当前我认为:> 只要你和一个非国内的服务器长时高频交换数据,基本上就 ...
- 作业6 团队项目之(开始第一个Sprint)
一.模仿并超越--类似应用. 五个app:1.四则运算小学堂(500-999次下载 3.57M) 2.小学生算术练习(9000+次下载 232K) 3.小学生加减题生成练习工具(2万-3万次下载 1. ...
- java下Mysql基本操作
https://www.cnblogs.com/centor/p/6142775.html
- NodeJs异步的执行过程
我这里写了一个代码片段,用来模拟一个嵌套的异步过程,下面我总结了下这段代码的执行顺序var fs = require("fs"); fs.stat('a.txt',callback ...