sicily-1029 Rabbit
一. 题意(0.04s)
每一对成熟的兔子可以生一对兔子,兔子在m个月之后成熟,假设兔子都不会死,计算d个月后一共有多少只兔子。
二. 要高精度加法(用string)
三. 公式:ans[m] = ans[m - 1] + ans[m-M]。
这里M最大值只可能是10,所以开个最大存10个string的数组。把1到N分成数量的M的小组,重复使用数组里面的数据,节省空间。
四. 源代码
//
// main.cpp
// sicily-1029
//
// Created by ashley on 14-12-5.
// Copyright (c) 2014年 ashley. All rights reserved.
// #include <iostream>
#include <string>
using namespace std;
string ans[];
string clearZeros(string data)
{
if (data[] == '') {
int key = (int) data.length() - ;
for (int i = ; i < data.length(); i++) {
if (data[i] != '') {
key = i;
break;
}
}
data.erase(, key);
}
if (data == "") {
data = "";
}
return data;
} //对位操作
void countPoint(string &operand1, string &operand2)
{
while (operand1.length() < operand2.length()) {
operand1 = "" + operand1;
}
while (operand1.length() > operand2.length()) {
operand2 = "" + operand2;
}
} string addition(string addent, string adder)
{
//先对位,在加数和被加数前面适当补0,使他们包含相同的位数
countPoint(addent, adder);
//前面再补一个0,确定和的最多位数
addent = "" + addent;
adder = "" + adder;
//从低位开始,对应位相加,结果写进被加数中,如果有进位,直接给被加数前一位加1
for (int i = (int) addent.length() - ; i > ; i--) {
addent[i] = addent[i] + adder[i] - ;
if (addent[i] > '') {
addent[i] = addent[i] - ;
addent[i - ] = addent[i - ] + ;
}
}
return clearZeros(addent);
} int main(int argc, const char * argv[])
{
int month, deadline;
while (cin >> month >> deadline) {
if (month == && deadline == ) {
break;
}
string increment;
increment = "";
ans[] = "";
for (int i = ; i <= month - ; i++) {
ans[i] = addition(ans[i - ], increment);
}
for (int i = month; i <= deadline; i++) {
increment = ans[i % month];
ans[i % month] = addition(ans[(i - ) % month], increment);
}
cout << ans[deadline % month] << endl;
}
return ;
}
sicily-1029 Rabbit的更多相关文章
- 拥抱.NET Core,跨平台的轻量级RPC:Rabbit.Rpc
不久前发布了一篇博文".NET轻量级RPC框架:Rabbit.Rpc",当初只实现了非常简单的功能,也罗列了之后的计划,经过几天的不断努力又为Rabbit.Rpc增加了一大波新特性 ...
- hdu----(1849)Rabbit and Grass(简单的尼姆博弈)
Rabbit and Grass Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 在 Windows 上安装Rabbit MQ 指南
rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务器. Ra ...
- .NET轻量级RPC框架:Rabbit.Rpc
最近准备写一个.NET的管理平台应用在公司,由于存在大量的Client => Server,Server => Client的请求需求在加上之前一直接触了解过RpcClient组件的开发, ...
- sicily 中缀表达式转后缀表达式
题目描述 将中缀表达式(infix expression)转换为后缀表达式(postfix expression).假设中缀表达式中的操作数均以单个英文字母表示,且其中只包含左括号'(',右括号‘)’ ...
- sicily 1934. 移动小球
Description 你有一些小球,从左到右依次编号为1,2,3,...,n. 你可以执行两种指令(1或者2).其中, 1 X Y表示把小球X移动到小球Y的左边, 2 X Y表示把小球X移动到小球Y ...
- 古典问题rabbit
/**古典问题: * 有一对兔子,从出生后第三个月起每个月都生一对兔子, * 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死, * 问每个月的兔子总数为多少? * 程序分析:兔子的规律为数列: ...
- Error: unable to connect to node rabbit@mail: nodedown
某天,开启一个应用时,发现连接rabbitmq失败,本来想用rabbitmqctl来查看队列,结果提示“Error: unable to connect to node rabbit@mail: no ...
- HDU-4057 Rescue the Rabbit(AC自动机+DP)
Rescue the Rabbit Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- .NET 平台下的插件化开发内核(Rabbit Kernel)-转
什么是RabbitHub? RabbitHub 是专门针对 .NET 平台所设计.研发的一套相对完整的插件开发框架,它是由一个内核两大框架多个组件及一系列的开发时支持而构成. RabbitHub 架构 ...
随机推荐
- QF——OC的多态,动态绑定及实现原理
多态: 封装,继承,多态是面向对象的三大特征. 那多态到底是什么呢? 多态:允许不同的类定义相同的方法,OC能自己判断当前类所对应的方法,不会混乱. 动态类型:程序直到运行时才确定对象的类型. 动态绑 ...
- Windows 去掉启动时的放大镜
控制面板-轻松访问中心-使计算机更易于显示不勾选 启用放大镜
- struts2中的表达元素标签使用详解
级联标签是使用:一级下拉框应该使用map对象的key集合作为下拉框元素,二级下了框应该使用一级下拉框对应的选择值自动的弹出待选择的元素值(集合) 页面代码如下:<s:set name=" ...
- nodejs 文件查找中文,替换为英文
帮以前同事解决一个需求,中文项目 翻译 英文项目~~~ 考虑到具体实现方面的问题,如果智能的话,肯定是要做中文的语法分析,不过感觉这个有难度. 所以最后的方案是遍历文件,将中文短语匹配出来,再进行人工 ...
- js关闭 window.open 打开的页面
1.关闭 当前页面 window.opener = null; window.open('', '_self', ''); window.close(); 但是在FF中就是不行: 2.项目中情况是通过 ...
- vmware 使用技巧
1.虚拟机如何进入BIOS界面? 方法: 1) 开机按F2 2) 若来不及按F2的话,可以通过以下 2. 如何让虚拟机进入安全模式? 方法:开机快速按F8 3. 当不能连接到vCenter Serve ...
- saiku之固定维度(必选维度)
工作中遇到的问题,记录下来方便以后查找. 在saiku中如何设定固定维度? 找到WorkspaceDropZone.js文件,在synchronize_query: function(){}方法中的“ ...
- C++一维数组和指针的关系总结
对于数组int a[10]; a表示数组的第一个元素的地址,即&a[0]; 如果使指针p,指向数组的首元素,可以进行操作: int * p=a; 或者 int *p=&a[0]; 那么 ...
- IOS开发之xcode 快捷键
IOS开发也有一年多了,发现Xcode快捷键,还不熟,恶补一下.要不然真影响工作效率,呵呵! 1. 文件 CMD + N: 新文件 CMD + SHIFT + N: 新项目 CMD + O: 打开 C ...
- Leetcode:Swap Nodes in Pairs 单链表相邻两节点逆置
Given a linked list, swap every two adjacent nodes and return its head. For example, Given 1->2-& ...