CodeForces 379 D. New Year Letter
枚举开头结尾的字母,枚举ac的个数,总AC个数就是两个Fibonacci数列的和。。。。。
1 second
256 megabytes
standard input
standard output
Many countries have such a New Year or Christmas tradition as writing a letter to Santa including a wish list for presents. Vasya is an ordinary programmer boy. Like all ordinary boys, he is going to write the letter to Santa on the New Year Eve (we Russians actually expect Santa for the New Year, not for Christmas).
Vasya has come up with an algorithm he will follow while writing a letter. First he chooses two strings, s1 anf s2, consisting of uppercase English letters. Then the boy makes string sk, using a recurrent equation sn = sn - 2 + sn - 1, operation '+' means a concatenation (that is, the sequential record) of strings in the given order. Then Vasya writes down string sk on a piece of paper, puts it in the envelope and sends in to Santa.
Vasya is absolutely sure that Santa will bring him the best present if the resulting string sk has exactly x occurrences of substring AC (the short-cut reminds him оf accepted problems). Besides, Vasya decided that string s1 should have length n, and string s2 should have length m. Vasya hasn't decided anything else.
At the moment Vasya's got urgent New Year business, so he asks you to choose two strings for him, s1 and s2 in the required manner. Help Vasya.
The first line contains four integers k, x, n, m (3 ≤ k ≤ 50; 0 ≤ x ≤ 109; 1 ≤ n, m ≤ 100).
In the first line print string s1, consisting of n uppercase English letters. In the second line print string s2, consisting of m uppercase English letters. If there are multiple valid strings, print any of them.
If the required pair of strings doesn't exist, print "Happy new year!" without the quotes.
3 2 2 2
AC
AC
3 3 2 2
Happy new year!
3 0 2 2
AA
AA
4 3 2 1
Happy new year!
4 2 2 1
Happy new year!
#include <iostream>
#include <cstring>
#include <cstdio> using namespace std; int dp[120];
char sa[12000],sb[12000];
long long int fib[120]; int getMAX(char s,char e,int l)
{
if(l==1)
{
return 0;
}
if(l==2)
{
if(s=='A'&&e=='C') return 1;
else return 0;
}
if(l==3)
{
if(s=='A'||e=='C') return 1;
else return 0;
}
if(l>=4)
{
if(s=='A'&&e=='C') return (l-4)/2+2;
else if((s!='A'&&e=='C')||(s=='A'&&e!='C')) return (l-3)/2+1;
else return (l-2)/2;
}
} long long int getfibK(int a,int b,int x)
{
fib[0]=0;fib[1]=a;fib[2]=b;
for(int i=3;i<=x;i++)
{
fib[i]=fib[i-1]+fib[i-2];
}
if(fib[x]>1e9) return -1;
return fib[x];
} int main()
{
int k,x,n,m;
scanf("%d%d%d%d",&k,&x,&n,&m);
char s1,e1,s2,e2;
for(s1='A';s1<='C';s1++)
{
for(e1='A';e1<='C';e1++)
{
if(n==1&&s1!=e1) continue;
for(s2='A';s2<='C';s2++)
{
for(e2='A';e2<='C';e2++)
{
if(m==1&&s2!=e2) continue;
memset(dp,0,sizeof(dp));
char ls1=s1,le1=e1,ls2=s2,le2=e2;
for(int i=3;i<=k;i++)
{
dp[i]=dp[i-2]+(le1=='A'&&ls2=='C')+dp[i-1];
char ts=ls2;
ls2=ls1;
ls1=ts;le1=le2;
}
long long int tx=dp[k];
if(tx>x) continue;
int MaxS1=getMAX(s1,e1,n),MaxS2=getMAX(s2,e2,m);
for(int i=0;i<=MaxS1;i++)
{
for(int j=0;j<=MaxS2;j++)
{
long long int ty=getfibK(i,j,k);
if(ty<0) continue;
if(tx+ty==(long long int )x)
{
int posA=i,posB=j;
int cnta=1,cntb=1;
sa[0]=s1;sa[n-1]=e1;
sb[0]=s2;sb[m-1]=e2;
if(n!=1)
{
while(posA--)
{
if(cnta==1&&sa[0]=='A')
{
sa[cnta++]='C';
}
else
{
sa[cnta++]='A';
sa[cnta++]='C';
}
}
for(int ck=cnta;ck<n-1;ck++)
{
sa[ck]='B';
}
}
if(m!=1)
{
while(posB--)
{
if(cntb==1&&sb[0]=='A')
{
sb[cntb++]='C';
}
else
{
sb[cntb++]='A';
sb[cntb++]='C';
}
}
for(int ck=cntb;ck<m-1;ck++)
{
sb[ck]='B';
}
}
printf("%s\n",sa);
printf("%s\n",sb);
return 0;
}
}
}
}
}
}
}
printf("Happy new year!\n");
return 0;
}
CodeForces 379 D. New Year Letter的更多相关文章
- Codeforces 379 F. New Year Tree
\(>Codeforces \space 379 F. New Year Tree<\) 题目大意 : 有一棵有 \(4\) 个节点个树,有连边 \((1,2) (1,3) (1,4)\) ...
- 【codeforces 379D】New Year Letter
[题目链接]:http://codeforces.com/contest/379/problem/D [题意] 让你构造出两个长度分别为n和m的字符串s[1]和s[2] 然后按照连接的规则,顺序连接s ...
- Codeforces Round #370 - #379 (Div. 2)
题意: 思路: Codeforces Round #370(Solved: 4 out of 5) A - Memory and Crow 题意:有一个序列,然后对每一个进行ai = bi - bi ...
- codeforces Good Bye 2013 379D New Year Letter
题目链接:http://codeforces.com/problemset/problem/379/D [题目大意] 告诉你初始字符串S1.S2的长度和递推次数k, 使用类似斐波纳契数列的字符串合并的 ...
- Codeforces 379D - New Year Letter
原题地址:http://codeforces.com/contest/379/problem/D 题目大意:给出一种生成字符串的方法 s[k] = s[k - 2] + s[k - 1],其中加法意为 ...
- Codeforces Round #116 (Div. 2, ACM-ICPC Rules) C. Letter 暴力
C. Letter Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/180/problem/C D ...
- Codeforces Beta Round #14 (Div. 2) A. Letter 水题
A. Letter 题目连接: http://www.codeforces.com/contest/14/problem/A Description A boy Bob likes to draw. ...
- Codeforces Round #379 (Div. 2) E. Anton and Tree 缩点 直径
E. Anton and Tree 题目连接: http://codeforces.com/contest/734/problem/E Description Anton is growing a t ...
- Codeforces Round #379 (Div. 2) D. Anton and Chess 水题
D. Anton and Chess 题目连接: http://codeforces.com/contest/734/problem/D Description Anton likes to play ...
随机推荐
- mybatis中使用log4j
Mybatis默认使用有slf4j,所以必须加入下面的依赖,否则可能出现日志无法打印sql或者无法打印resultset. <dependency> <groupId>org. ...
- 深入理解 Javascript 面向对象编程(转)
一:理解构造函数原型(prototype)机制 prototype是javascript实现与管理继承的一种机制,也是面向对象的设计思想.构造函数的原型存储着引用对象的一个指针,该指针指向与一个原型对 ...
- textarea
■ 摘要 项目 说明 形式 <textarea>-</textarea> 支持 H2+ / e2+ / N2+ / Fx1+ / Op6+ / Ch1+ / Sa1+ 标签省略 ...
- zTouch-移动端触屏开发利器(zepto touch扩展)
* Zepto.js v1.0.1 touch extend (Zepto.js v1.0.1 的swipe touch扩展)js-处理手机移动端web触屏手势动作. Zepto.js v1.0.1版 ...
- IBM WebSphere MQ的C#工具类以及源码(net)
简单的介绍一下MQ常用的对象 Queue Manager 队列管理器 主要负责管理队列.通道等,类似与Oracle中的Oracle实例的概念,在一台服务器中可以定义多个Queue Manager. Q ...
- iOS设计模式解析(三)适配器模式
适配器模式:将一个类的借口转换成客户端希望的另一个接口 有一个很直观的图: 例如 :电源适配器(将110V电压转换成220V电压,其中Traget是220V电压,adaptee就是110V电 ...
- zookeeper_03:Java 客户端(原生API)
环境配置 下载并ZooKeeper的发行版 新建Java project,并导入jar包 创建会话 public class CreateSession implements Watcher { pr ...
- [Tree]Binary Tree Preorder Traversal
Total Accepted: 97599 Total Submissions: 257736 Difficulty: Medium Given a binary tree, return the p ...
- UNIX环境高级编程--#include "apue.h"
apue.h头文件为作者自己编写而非系统自带,故需要自行添加! 第一:打开网站 http://www.apuebook.com/第二:选择合适的版本(一共有三个版本,根据书的版本选择)下载源码sour ...
- Android 添加菜单项
刚开始看郭大神的<>,实现以下里面的一些例子.利用Menu给APP添加一个菜单项. 效果图 结构图 在res的menu文件夹下创建一个xml文件,当然你也可以使用系统创建的main.xml ...