Eddy's research II 动规小练

Eddy’s research II
原题链接https://vjudge.net/contest/349774#problem/H
在这里插入图片描述
在这里插入图片描述
本题主要是对方程的一点小优化,直接抄方程的话会t;
经过计算可以发现一些规律
m=0;时输出n+1;
m=1;时先把n–一直到0 再递归会来,最终会得到n+2;
m=2和m=3的情况直接套用公式,

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
long long di(long long x,long long y)
{
	if(x==0)
	{
		return y+1;
	}
	if(x==1)
	{
		return 2+y;
	}
	if(x==2)
	{
		if(y>0)
		{
			return di(1,di(2,y-1));
		}
		else
		{
			return di(1,1);
		}
	}
	if(x==3)
	{
		if(y>0)
		{
			return di(2,di(3,y-1));
		}
		if(y==0)
		{
			return di(2,1);
		}
	} 
}
int main()
{
	long long n,m;
	while(~scanf("%lld %lld",&m,&n))
	{
		long long sum=di(m,n);
		printf("%lld\n",sum);
	}
	return 0;
}
发布了130 篇原创文章 · 获赞 3 · 访问量 1615

猜你喜欢

转载自blog.csdn.net/yeyuluo/article/details/103918448