1029. Rabbit

1.一个简单的递归求和即可

2.m = 1应该是特殊的情况

#include<iostream>
#include<string>
#include<vector>
using namespace std;

class BigNum
{
public:
	BigNum()
	{
		this->num = "0";
	}
	BigNum(string n)
	{
		this->num = n;
	}
	string getNum()
	{
		return this->num;
	}

	friend BigNum operator +(const BigNum &n1, const BigNum &n2)
	{
		string temp;//和的倒置
		int carry = 0;
		//计算结果
		for(int i = n1.num.length() - 1, j = n2.num.length() - 1; i >= 0 || j >= 0; i--, j--)
		{
			if(i >= 0 && j >= 0)//两者、进位之和
			{
				temp.push_back(((n1.num[i] - 48) + (n2.num[j] - 48) + carry) % 10 + 48);//存储结果
				if((n1.num[i] - 48) + (n2.num[j] - 48) + carry > 9)//有新的进位
				{
					carry = 1;//两个十进制之和的进位不会超过1
				}
				else//没有进位
				{
					carry = 0;
				}
			}
			else//某一个数的位数已经结束
			{
				if(i >= 0)
				{
					temp.push_back(((n1.num[i] - 48) + carry) % 10 + 48);
					if((n1.num[i] - 48) + carry > 9)
					{
						carry = 1;
					}
					else
					{
						carry = 0;
					}
				}
				else//j >= 0
				{
					temp.push_back(((n2.num[j] - 48) + carry) % 10 + 48);
					if((n2.num[j] - 48) + carry > 9)
					{
						carry = 1;
					}
					else
					{
						carry = 0;
					}
				}
			}
		}
		if(carry == 1)//最高进位
			temp.push_back('1');

		//获取正确的结果
		string rev;
		bool flag = true;//去除头部的0 
		for(int i = temp.length() - 1; i >= 0; i--)
		{
			if(temp[i] == '0' && flag)
			{
				continue;
			}
			else
				flag = false;

			rev.push_back(temp[i]);
		}

		//创建一个BigNum对象,并返回
		BigNum sum(rev);
		return sum;
	}

	friend ostream& operator<<(ostream& outs, const BigNum& n)
	{
		outs << n.num;
		
		return outs;
	}
private:
	string num;
	
};

int main()
{
	int m, d;
	vector<BigNum> rabbit;//rabbit[0]表示已经成年,rabbit[1]表示还有1个月才成年
	while(cin >> m >> d && m != 0)
	{
		rabbit.clear();
		BigNum first("1");//一开始有一对
		rabbit.push_back(first);
		for(int i = 1; i < m; i++)
		{
			BigNum temp;
			rabbit.push_back(temp);
		}

		for(int i = 0; i < d; i++)
		{
			if(m != 1)
			{
				BigNum temp = rabbit[0];//生育
				for(int j = 0; j < m - 1; j++)
				{
					if(j == 0)
					{
						rabbit[j] = rabbit[j] + rabbit[j + 1];
					}
					else
					{
						rabbit[j] = rabbit[j + 1];
					}
				}
				rabbit[m - 1] = temp;
			}
			else
			{
				rabbit[0] = rabbit[0] + rabbit[0];
			}
		}

		BigNum sum;
		for(int i = 0; i < m; i++)
		{
			sum = sum + rabbit[i];
		}

		cout << sum << endl;
	}
	return 0;
}


### 如何使用 logback 配置文件屏蔽特定类的日志输出 在 Logback 中,可以通过设置 logger 的级别来控制某个包或者类的日志输出行为。如果希望屏蔽 `org.springframework.amqp.rabbit.RabbitListenerEndpointContainer` 类的日志输出,则可以将其日志级别设置为 `OFF`。 以下是具体的配置方法: #### 1. 修改 logback.xml 或 logback-spring.xml 文件 在 Logback 配置文件中添加如下内容以禁用目标类的日志输出: ```xml <configuration> <!-- 屏蔽 RabbitListenerEndpointContainer 日志 --> <logger name="org.springframework.amqp.rabbit.listener.RabbitListenerEndpointContainer" level="OFF"/> <!-- 其他全局或默认日志配置 --> <root level="INFO"> <appender-ref ref="STDOUT"/> </root> </configuration> ``` 上述配置中的 `<logger>` 节点定义了一个名为 `org.springframework.amqp.rabbit.listener.RabbitListenerEndpointContainer` 的 logger,并将其日志级别设为 `OFF`,这意味着该类不会输出任何级别的日志信息[^1]。 #### 2. 测试配置效果 完成以上修改后,重新启动应用程序并验证是否成功屏蔽了来自 `RabbitListenerEndpointContainer` 的日志输出。如果没有其他更高优先级的 logger 定义覆盖此配置,则预期的效果应该是完全移除了此类产生的日志信息。 --- ### 关于 Spring Boot 和 RabbitMQ 的补充说明 对于提到的相关问题,这里提供一些背景解释以便更好地理解上下文环境下的解决方案: - **Spring Boot ClassNotFoundException**: 如果遇到类似 `ClassNotFoundException: org.springframework.core.metrics.ApplicationStartup` 的错误,通常是因为项目使用的 Spring 版本不匹配所致。确保所引入的依赖版本兼容当前项目的 Spring Boot 版本即可解决此问题[^2]。 - **RestTemplate Bean 缺失**: 当应用提示缺少 RestTemplate Bean 并且注入失败时(带有 Autowired 注解),需要显式声明一个 RestTemplate Bean 到容器中。例如,在任意 Configuration 类中加入以下代码片段: ```java @Bean public RestTemplate restTemplate() { return new RestTemplate(); } ``` 这样能够满足依赖注入的需求[^3]。 - **DLX vs Spring AMQP 死信队列处理方式对比**: 使用 DLX (Dead Letter Exchange) 是一种原生支持的方式,而借助 Spring AMQP 可能会增加额外的应用层逻辑复杂度。两者各有优劣;前者更贴近底层协议特性,后者则提供了更为丰富的抽象接口便于开发人员操作[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值