HDU 5686:2016"百度之星" - 资格赛 Problem B
原文链接:https://www.dreamwings.cn/hdu5686/2645.html
Problem B
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 403 Accepted Submission(s): 136
1 3 5
1 3 8Hint如果序列是:(111)。可以构造出如下三个新序列:(111), (21), (12)。
AC代码:
#include "stdio.h" #include "stdlib.h" #define N 22 //22位能表示第100个以内的斐波那契数列值 //大数加法函数 char * Add(char * x1, char * x2) { char * y = (char *) malloc(sizeof(char *) * N); int i = 0; int t = 0; //表示进位 //实现大数加法,数组前面存的是数值的高位。如123在数组中是{'3','2','1','\0'} //处理相同长度的部分 while(x1[i] != '\0' && x2[i] != '\0') { y[i] = (x1[i] - '0' + x2[i] - '0' + t) % 10 + '0'; t = (x1[i] - '0' + x2[i] - '0' + t) / 10; i++; } //如果x1比x2长 while(x1[i] != '\0') { y[i] = (x1[i] - '0' + t) % 10 + '0'; t = (x1[i] - '0' + t) / 10; i++; } //如果x2比x1长 while(x2[i] != '\0') { y[i] = (x2[i] - '0' + t) % 10 + '0'; t = (x2[i] - '0' + t) / 10; i++; } //如果还有进位 if (t == 1)y[i++] = '1'; y[i] = '\0'; return y; } //输出 void Output(char * y) { //先找到\0的位置,然后逆序输出 int i = 0; while(y[i] != '\0')i++; i--; while(i >= 0) printf("%d", y[i--] - '0'); } int main() { int b; while(~scanf("%d", &b)) { if(b) { getchar(); int count = b; int i; char * x1 = (char *)malloc(sizeof(char) * N); char * x2 = (char *)malloc(sizeof(char) * N); char * y = (char *)malloc(sizeof(char) * N); //初始化y, x1, x2 for (i = 0; i < N; i++) { x1[i] = '\0'; x2[i] = '\0'; y[i] = '\0'; } //给x1和x2赋初值 x1[0] = '0'; x1[1] = '\0'; x2[0] = '1'; x2[1] = '\0'; //斐波那契数列,叠加 for(i = 1; i <= count; i++) { y = Add(x1, x2); x1 = x2; x2 = y; } //输出结果 Output(y); printf("\n"); } else printf("\n"); } return 0; }
import java.util.Scanner; import java.math.BigInteger; public class Main { public static BigInteger[]dp=new BigInteger[205]; public static void main(String[] args) { // TODO Auto-generated method stub Scanner cin=new Scanner(System.in); //int n=cin.nextInt(); Init(); while(cin.hasNext()) { int n=cin.nextInt(); if(n>=1&&n<=200) { System.out.print(dp[n]); } System.out.println(); } } public static void Init() { dp[1]=new BigInteger("1"); dp[2]=new BigInteger("2"); for(int i=3;i<=201;i++) { dp[i]=dp[i-1].add(dp[i-2]); } } }
HDU 5686:2016"百度之星" - 资格赛 Problem B的更多相关文章
- HDU 5688:2016"百度之星" - 资格赛 Problem D
原文链接:https://www.dreamwings.cn/hdu5688/2650.html Problem D Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 5685:2016"百度之星" - 资格赛 Problem A
原文链接:https://www.dreamwings.cn/hdu5685/2637.html Problem A Time Limit: 2000/1000 MS (Java/Others) ...
- [HDU5686]2016"百度之星" - 资格赛 Problem B
题目大意:给你n,规定一个串中相邻的两个1可以合并为一个2(别的不行),让你求长度为n的全1串最多能变成多少种不同的串. 解题思路:我们先来找一波规律,发现n=1,2,3,4,5时答案分别为1,2,3 ...
- [HDU5687]2016"百度之星" - 资格赛 Problem C
题目大意:有n个操作,每个操作是以下三个之一,要你实现这些操作. 1.insert : 往字典中插入一个单词2.delete: 在字典中删除所有前缀等于给定字符串的单词3.search: 查询是否在字 ...
- [HDU5688]2016"百度之星" - 资格赛 Problem D
题目大意:给你n个字符串,如果一个字符串可以通过重新排列变成另一个字符串,则认为这两个字符串相等.每输入一个字符串,输出这个字符串和与它相等的之前出现了几次. 解题思路:我们可以用map保存一个字符串 ...
- [HDU5685]2016"百度之星" - 资格赛 Problem A
题目大意:给你一个字符串,和一些问题,每个问题问你[l,r]子串的哈希值是多少. 哈希值计算方法为:$H(s)=\prod _{i=1} ^{i\leq len(s)}(s_i-28)(mod\ 99 ...
- 2016百度之星资格赛 Problem A(前缀积与求逆元)
题意:给出一个字符串,每次询问给出x和y要求算出从x到y的每个字符的(ASCII 码值-28)的值的积(mod9973). 分析:首先的想法肯定是算出每个位置的前缀积,然后只要F[y]/F[x-1]即 ...
- 2016百度之星资格赛 Problem B(大数+组合数)
题意:度熊面前有一个全是由1构成的字符串,被称为全1序列.你可以合并任意相邻的两个1,从而形成一个新的序列.对于给定的一个全1序列,请计算根据以上方法,可以构成多少种不同的序列.最多200个1. 比如 ...
- 2016百度之星 资格赛ABCDE
看题:http://bestcoder.hdu.edu.cn/contests/contest_show.php?cid=690 交题:http://acm.hdu.edu.cn/search.php ...
随机推荐
- js中常用的Tab切换
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- SQL server while语句、存储过程
1.循环语句 2.存储过程 存储过程(stored procedure)有时也称为sproc.存储过程存储于数据库中而不是在单独的文件中,有输入参数.输出参数以及返回值等. 3.四种存储过程类型(类似 ...
- Oracle索引简单介绍与示例
索引的三大特性 1索引高度 在SQL检索数据(SELECT)的时候,索引的高度的不同对检索的效率有明显的差别,数据库访问索引需要读取的数据块通常是索引的高度+1个数据块数,也就是说索引的高度越高,访问 ...
- JSP页面以及简单的指令
JSP(Java Server Pages)是指: 在HTML中嵌入Java脚本语言 由应用服务器中的JSP引擎来编译和执行嵌入的Java脚本语言命令 然后将生成的整个页面信息返回给客户端 页 ...
- 测试的程序 test.php,保存放IIS的根目录下
IIS+PHP的配置的方法,试过之后很多都不能达到效果.于是总结了大部分的文章后就得出了这样的方法 一.下载必须的程序:(1) 先到PHP的官方网站下载一个PHP(本文就以PHP 4.4.2为例).网 ...
- Ubuntu下编译第一个C程序的成功运行
1. 打开控制台:使用快捷键 Ctrl + Alt + T: 2. 安装gcc为C语言编译器,g++为C++ 语言编译器 sudo apt-get install g++. 3. 编辑好hello ...
- Web前端开发基础 第一天(Html和CSS)
学习web前端开发基础技术需要掌握:HTML.CSS.JavaScript语言.下面我们就来了解下这三门技术都是用来实现什么的: 1. HTML是网页内容的载体.内容就是网页制作者放在页面上想要让用户 ...
- 网站部署后Parser Error Message: Could not load type 的解决方案
asp.net 的Webproject 项目是在64bit机上开发,默认选项发布后,部署到32bit的服务器上,出现Parser Error Message: Could not load type的 ...
- XHTML基础
简介:前一章,我们知道网页主要是由内容.结构.表现和行为四个部分组成,而网页的结构由W3C规定的XHTML语言定义.本章介绍定义网页结构的XHTML基本标价. 1.XHTML基本语法 ...
- java 求 两个数的百分比% (转)
int num1 = 7; int num2 = 9; // 创建一个数值格式化对象 NumberFormat numberFormat = NumberFormat.getInstance(); / ...