HDU6130 签到题 打表

Posted ( m Lweleth)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU6130 签到题 打表相关的知识,希望对你有一定的参考价值。

LINK

题意:给出一个描述自身的数列,求出第n项

思路:看了很久题目才看懂..每个值其实是描述一个分组中的个数,把两个数列对照一下就可以了,那么一个指针扫,同时向尾部加数,构造个数组就行了。其实很水..

 

/** @Date    : 2017-08-15 12:13:59
  * @FileName: 1011.cpp
  * @Platform: Windows
  * @Author  : Lweleth ([email protected])
  * @Link    : https://github.com/
  * @Version : $Id$
  */
#include <bits/stdc++.h>
#define LL long long
#define PII pair<int ,int>
#define MP(x, y) make_pair((x),(y))
#define fi first
#define se second
#define PB(x) push_back((x))
#define MMG(x) memset((x), -1,sizeof(x))
#define MMF(x) memset((x),0,sizeof(x))
#define MMI(x) memset((x), INF, sizeof(x))
using namespace std;

const int INF = 0x3f3f3f3f;
const int N = 1e7+20;
const double eps = 1e-8;

int a[N] = {0, 1,2,2,1,1,2,1,2,2,1,2,2,1,   1, 2, 1, 1, 2, 2, 1};
int main()
{
	int cnt = 21;
	for(int i = 14; cnt <= 10000000; i++) {
		if(a[i] == 0)
			break;
		if(a[i] == 1) {
			a[cnt] = (3 - a[cnt - 1]);
			cnt++;
		}
		else if(a[i] == 2) {
			a[cnt] = (3 - a[cnt - 1]);
			a[cnt + 1] = (3 - a[cnt - 1]);
			cnt += 2;
		}
	}
	int T;
	cin >> T;
	while(T--)
	{
		int n;
		scanf("%d", &n);
		printf("%d\n", a[n]);
	}
    return 0;
}

以上是关于HDU6130 签到题 打表的主要内容,如果未能解决你的问题,请参考以下文章

HDU - 1061-快速幂签到题

hdu1848(sg函数打表)

Just Random HDU - 4790 思维题(打表找规律)分段求解

hdu 6253 (bfs打表)

HDU 1286 找新朋友 (欧拉phi函数打表)

统计难题HDU - 1251map打表或字典树字典树模板