Fibonacci String

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 4641    Accepted Submission(s): 1566

Problem Description
After little Jim learned Fibonacci Number in the class , he was very interest in it.

Now he is thinking about a new thing -- Fibonacci String .



He defines : str[n] = str[n-1] + str[n-2] ( n > 1 ) 



He is so crazying that if someone gives him two strings str[0] and str[1], he will calculate the str[2],str[3],str[4] , str[5].... 



For example :

If str[0] = "ab"; str[1] = "bc";

he will get the result , str[2]="abbc", str[3]="bcabbc" , str[4]="abbcbcabbc" …………;



As the string is too long ,Jim can't write down all the strings in paper. So he just want to know how many times each letter appears in Kth Fibonacci String . Can you help him ?
 
Input
The first line contains a integer N which indicates the number of test cases.

Then N cases follow.

In each case,there are two strings str[0], str[1] and a integer K (0 <= K < 50) which are separated by a blank.

The string in the input will only contains less than 30 low-case letters.
 
Output
For each case,you should count how many times each letter appears in the Kth Fibonacci String and print out them in the format "X:N". 

If you still have some questions, look the sample output carefully.

Please output a blank line after each test case.



To make the problem easier, you can assume the result will in the range of int. 
 
Sample Input
1
ab bc 3
 
Sample Output
a:1
b:3
c:2
d:0
e:0
f:0
g:0
h:0
i:0
j:0
k:0
l:0
m:0
n:0
o:0
p:0
q:0
r:0
s:0
t:0
u:0
v:0
w:0
x:0
y:0
z:0
 
Author
linle
 
Source
 
好坏好坏的一道题,不知道算不算水题,感觉这道题还挺好的。斐波那契字符串,就是说第0串字符为 ab,第1串为bc。那么依据斐波那契第二串字符为abbc,第三串为bcabbc由于第三串里边有1个a,三个b,两个c,别的没有了,所以输出了測试例子那样的.
要是依照斐波那契一个一个字符串的加。预计输入一个50。最后一个的字符串都不知道多长了。同一时候字符数组也开不了这么大,于是就開始分析。26个字母里边的每个字母也是按斐波那契规律增长的,比方说,a在第0个字符串里边是1次,第1个字符串里边是0次,第二个里边是1+0=1次,第三次就是1+0=1次,同理得到了例子输出的b:3;
所以依据原理,就能够写出简单的代码.
附ac代码:
#include<stdio.h>
#include<string.h>
char c[1000],s[1000];
int a[27][100];//储存第1~100次所求字符串里边的第1~26个字母的个数.
int main()
{
int t,m,n,k,i,j;
scanf("%d",&t);
while(t--)
{
scanf("%s%s%d",c,s,&n);
int len=strlen(c);//測长度
int lem=strlen(s);
memset(a,0,sizeof(a));//清零a数组.
for(j=0;j<len;j++)
for(i=1;i<=26;i++)
if(c[j]==i+'a'-1)//假设当前字符等于第i个字母
a[i][1]++;//则在a[i][1]++。
for(j=0;j<lem;j++)
for(i=1;i<=26;i++)
if(s[j]==i+'a'-1)
a[i][2]++; //同理得到第二个字符串的 每个字母有多少个.
for(i=1;i<=26;i++)
for(j=3;j<=n+1;j++)
a[i][j]=a[i][j-1]+a[i][j-2];//进行斐波那契相加.
for(i=1;i<=26;i++)
printf("%c:%d\n",i+'a'-1,a[i][n+1]);
printf("\n");//每一次例子后须要加一个换行。由于没看这个pe了一次.
}
return 0;
}

附測试例子:


杭电1708Fibonacci String的更多相关文章

  1. 杭电acm 1002 大数模板(一)

    从杭电第一题开始A,发现做到1002就不会了,经过几天时间终于A出来了,顺便整理了一下关于大数的东西 其实这是刘汝佳老师在<算法竞赛 经典入门 第二版> 中所讲的模板,代码原封不动写上的, ...

  2. 杭电ACM分类

    杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...

  3. C#利用POST实现杭电oj的AC自动机器人,AC率高达50%~~

    暑假集训虽然很快乐,偶尔也会比较枯燥,,这个时候就需要自娱自乐... 然后看hdu的排行榜发现,除了一些是虚拟测评机的账号以外,有几个都是AC自动机器人 然后发现有一位作者是用网页填表然后按钮模拟,, ...

  4. 杭电ACM2076--夹角有多大(题目已修改,注意读题)

    杭电ACM2076--夹角有多大(题目已修改,注意读题) http://acm.hdu.edu.cn/showproblem.php?pid=2076 思路很简单.直接贴代码.过程分析有点耗时间. / ...

  5. 杭电ACM2022--海选女主角

    海选女主角 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  6. 用python爬取杭电oj的数据

    暑假集训主要是在杭电oj上面刷题,白天与算法作斗争,晚上望干点自己喜欢的事情! 首先,确定要爬取哪些数据: 如上图所示,题目ID,名称,accepted,submissions,都很有用. 查看源代码 ...

  7. 杭电oj 4004---The Frog Games java解法

    import java.util.Arrays; import java.util.Scanner; //杭电oj 4004 //解题思路:利用二分法查找,即先选取跳跃距离的区间,从最大到最小, // ...

  8. 杭电ACM 1297 Children’s Queue

    这道题是排序问题,可以用递归方法解决. 计算F(n): 一:当最后一个是男孩M时候,前面n-1个随便排出来,只要符合规则就可以,即是F(n-1): 二:当最后一个是女孩F时候,第n-1个肯定是女孩F, ...

  9. 杭电ACM刷题(1):1002,A + B Problem II 标签: acmc语言 2017-05-07 15:35 139人阅读 评

    最近忙于考试复习,没有多少可供自己安排的时间,所以我利用复习之余的空闲时间去刷刷杭电acm的题目,也当对自己编程能力的锻炼吧. Problem Description I have a very si ...

随机推荐

  1. python爬虫基础01-HTTP协议

    深入浅出了解HTTP协议 HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议.目前使用最普遍的一个版本是HTTP 1.1. HTTP ...

  2. 创建虚拟机、安装centos系统,xshell连接虚拟机

    创建虚拟机 文件--->新建虚拟机--->自定义最高级 选择虚拟机兼容性: workstation12.0:限制少,而且兼容的多 稍后安装操作系统 选择Linux系统 可选择centos7 ...

  3. Python-小游戏题目

    猜年龄游戏 n = 0 rayn_age = 19 a = {0:'666',1:'777',2:'888'} while n <3: age = input('请输入你的年龄:') age = ...

  4. 【ORACLE】调整序列的当前种子值

    [ORACLE]调整序列的当前种子值 --必须用SYS用户执行脚本:或具有SYSDBA角色登录: CREATE OR replace ); v_step ):;--步进 tsql ); BEGIN E ...

  5. Ubuntu新装系统要装软件

    1. 在虚拟机中新安装系统的时候,通常因为时间过了很长,软件有更新之后,安装vim的时候会出错,因此,装完系统先要做的: cd /var/lib/dpkg/updates/ ls sudo apt-g ...

  6. linux 第五部分 系统管理员 网络设定与备份

    linux 第五部分 系统管理员   网络设定与备份 系统基本设置   1.网络的设置  手动设置与dhcp自动获得     以及更改主机名称 centos 7   对网卡编号的规则 enol1  b ...

  7. system sys,sysoper sysdba 的区别

    --===================================== -- system sys,sysoper sysdba 的区别 --========================= ...

  8. poj2431 Expedition优先队列

    Description A group of cows grabbed a truck and ventured on an expedition deep into the jungle. Bein ...

  9. Hadoop 3.1.0 在 Ubuntu 16.04 上的安装过程

    安装过程主要参考官方文档: http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster. ...

  10. Oracle Partition 分区详细总结

    此文从以下几个方面来整理关于分区表的概念及操作:        1.表空间及分区表的概念        2.表分区的具体作用        3.表分区的优缺点        4.表分区的几种类型及操作 ...