题源
http://codeforces.com/gym/101502/problem/D
说一下题的意思,给你个数字n,每次你转动90度必须改变骰子朝上的数字,让朝上的数字相加,得到n。你得转动多少次?初始时数字1朝上,但这个1不算总数里,也就是你的初始值是0,不是1。
Input
The first line contains an integer T (1 ≤ T ≤ 200), where T is the number of test cases.
Then T lines follow, each line contains an integer n (1 ≤ n ≤ 10^4), where n is the required sum you need to reach.
Output
For each test case, print a single line containing the minimum number of required moves to reach the given sum. If there is no answer, print -1.
Example
Input
2
5
10
Output
1
2
先找一下每个朝上的数字转一下能转到什么数字。自己把筛子画出来就行了。
我在代码里解释每步什么意思。
#include <bits/stdc++.h>
using namespace std;
int vis[11111], n;
struct node
{
int num, sum, step; node里存的分别为当前朝上的数字时多少,
}; 当前累加的数多少,转了几次了。
int d[7][4] = //这个数组是每个数字朝上时能转到的数字。
{
0, 0