题解 SP3934 【MRECAMAN - Recaman’s Sequence】
这题感觉没有省选-吧,我要去入门的都能AC。
我采取的是递归读入+map判断重复,具体代码如下:
#include <cstdio>//比cin快
#include <map>//map头文件
using namespace std;//标准命名空间
map <int, bool> mp;//创造map映射
int a[500005];//数组
void input()
{
int k;
scanf("%d", &k);
if(k == -1)//看样例,-1结束
{
return ;
}
else
{
printf("%d\n", a[k]);
input();//递归
}
}
int main()
{
//先预处理一遍
a[0] = 0;
for(int i = 1; i <= 500000; i++)
{
if(a[i - 1] - i > 0 && !mp[a[i - 1] - i])//按照题意
{
a[i] = a[i - 1] - i;
}
else
{
a[i] = a[i - 1] + i;
}
mp[a[i]] = true;//将a[i]变为true
}
input();//递归读入和输出答案
return 0;
}
求过

浙公网安备 33010602011771号