ZOJ 3952 Fibonacci Sequence Chicken Edition


题目链接


题意

当我读第一遍题时,心态是崩溃的。。。

好吧,不多废话。

其实就是让你编一个程序来输出另一个程序源码。(禁止套娃)

另一个程序就是题中的Chicken Language

你编的程序输出的每一行 ‘c’ 的数量就是Chicken Language的一个操作码,有多少行输出便有多少个操作码。

这时你会想这和斐波那契数列有啥关系,其实就是通过操作码来算出斐波那契数列第n个数的值(n≤30且n≥1)。


思路

初始化 f(-1) = 1 , f(0) = 0 ,然后进入循环;

每次循环开始时的状态为 stack[1]存储剩下的循环次数,stack[2]存储 f(n-2) , stack[3]存储 f(n-1);

循环的操作:

操作 操作码
copy stack[2] to stack[4] 7 9 11 5
copy stack[3] to stack[2] 10 9 5
Add 相当于 stack[3] = stack[3]+stack[4] 1
push 1 相当于 stack[4] = 1 8
copy stack[1] to stack[5] 7 8 12 5
Subtract 相当于 stack[4] = stack[5] - stack[4] 2
copy stack[4] to stack[1] 11 8 5
push 1 相当于 stack[5] = 1 8
Compare 相当于 stack[4] = (stack[4]==stack[5]) 3
push 40 (一个大于操作码个数的值,用于程序stop) 相当于 stack[5] = 40 47
Jump (如果stack[4]==0,弹出stack[4]和stack[5];如果stack[4]==1,弹出stack[4]和stack[5],程序stop,此时stack[3]的值就是结果) 6
Jump 程序跳转到循环体开始 8 19 6

代码

一共用了27个操作码,如果你可以用的更少,请忽略这篇题解

#include<cstdio>
void print(int x){for(int i=0;i<x;i++){printf("c");}printf("\n");
}int main(){print(4);//读入一个数,作为循环次数print(8);//初始化f(-1) = 1print(7);//初始化f(0) = 0print(7);//循环体开始print(9);print(11);print(5);print(10);print(9);print(5);print(1);print(8);print(7);print(8);print(12);print(5);print(2);print(11);print(8);print(5);print(7);print(3);print(47);print(6);print(8);print(11);print(6);//循环体结束return 0;
}

zoj - 3952相关推荐

  1. ZOJ 3952 Fibonacci Sequence Chicken Edition

    Year 2017 is the year of chicken, so in this problem we introduce you an interesting programming lan ...

  2. ZOJ 3952 Fibonacci Sequence Chicken Edition 新构造语言,思路转换

    文章目录 题意 题解 题目链接 题意 给你一种只由字符'c'组成的语言,用这种语言编写一个计算斐波那契数列第n项的程序. 该程序结构体包括一个由1开始编号的栈,可进行7种操作,具体请看题面. 题解 首 ...

  3. ZOJ 2723 Semi-Prime ||ZOJ 2060 Fibonacci Again 水水水!

    两题水题: 1.如果一个数能被分解为两个素数的乘积,则称为Semi-Prime,给你一个数,让你判断是不是Semi-Prime数. 2.定义F(0) = 7, F(1) = 11, F(n) = F( ...

  4. zoj 1204 Additive equations

    ACCEPT acm作业 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=204 因为老师是在集合那里要我们做这道题.所以我很是天 ...

  5. 【HDU/POJ/ZOJ】Calling Extraterrestrial Intelligence Again (素数打表模板)

    http://poj.org/problem?id=1411  POJ http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=168 ...

  6. 模拟 ZOJ 3878 Convert QWERTY to Dvorak

    题目传送门 1 /* 2 模拟:手敲map一一映射,累! 3 除了忘记读入字符串不能用gets用getline外还是很顺利的AC了:) 4 */ 5 #include <cstdio> 6 ...

  7. 矩阵连乘积 ZOJ 1276 Optimal Array Multiplication Sequence

    题目传送门 1 /* 2 题意:加上适当的括号,改变计算顺序使得总的计算次数最少 3 矩阵连乘积问题,DP解决:状态转移方程: 4 dp[i][j] = min (dp[i][k] + dp[k+1] ...

  8. ZOJ 3597 Hit the Target! (线段树扫描线 -- 矩形所能覆盖的最多的点数)

    ZOJ 3597 题意是说有n把枪,有m个靶子,每把枪只有一发子弹(也就是说一把枪最多只能打一个靶子), 告诉你第 i 把枪可以打到第j个靶, 现在等概率的出现一个连续的P把枪,在知道这P把枪之后,你 ...

  9. 九度OJ—题目1032:ZOJ

    题目描写叙述: 读入一个字符串.字符串中包括ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出.当某个字符用完时,剩下的仍然依照ZOJ的顺序输出. 输入: 题目包括多组用例,每组用例占一行,包括ZOJ ...

最新文章

  1. 机器学习入门(09)— 偏导数、梯度概念、梯度下降法理论和实现
  2. Objective-C笔记
  3. sap 提取字符串中汉字
  4. emacs python_Emacs之Python编程环境配置 - elpy
  5. 蛮力法在查找算法中的应用(JAVA)--顺序查找
  6. jQuery DOM/属性/CSS操作
  7. redhat 6.5 mysql rpm_CentOS6.5和RedHat6.5下以rpm方式安装mysql-5.6.20
  8. 定时任务的时间设置-Cron表达式
  9. c++实现简单的qq连连看秒杀挂
  10. IPwe区块链智能池利用AI来处理专利分析
  11. Git重置登录密码问题,Git-remote Incorrect username or password ( access token )
  12. Oracle (07)游标对象.智能循环(FOR) 遍历游标.NULL值的比较.异常处理.存储过程.如何指定参数的模式.function 函数.包 package.触发器 trigger
  13. dft中X(K)的k的含义
  14. linux查看硬盘读取速度慢,Linux检测硬盘读取速度
  15. Linux进程虚拟内存大 性能,Linux进程分析(一) 虚拟内存和物理内存
  16. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift全文翻译
  17. 风陵渡口初相遇,一见杨过误终身
  18. 【JavaScript问题】JavaScript 请求后台报错 Invalid character found in the request target
  19. http协议之https协议, libcurl实现人脸识别, 车牌识别
  20. c语言——指针初阶(2)

热门文章

  1. webpack使用教程(二)
  2. 热点 可视化 渐变 颜色 java_GIS可视化——热点图
  3. NTP的进一步研究:PPS驱动开发
  4. 亿级流量架构:服务器扩容思路及问题分析
  5. Excel在统计分析中的应用—第九章—非参数检验-Mann-Whitney U检验
  6. 什么是SELINUX ?
  7. 从零开始的Linux学习日志(2)
  8. k8s dashboard token 过期时间修改
  9. 3344 数据结构实验之二叉树五:层序遍历
  10. 自制Jlink ob 072