玩叠骰子
玩叠骰子
时间限制(普通/Java):3000MS/10000MS 运行内存限制:65536KByte
描述
大家都玩过骰子吧,骰子一般都被用来赌博的工具,但是我们ACM的成员不一样。我们可以用骰子来编写出各种各样的题目,给广大爱好ACM的人锻炼思考问题的能力。看看骰子:
很熟悉吧o(∩_∩)o ~~~ 废话不多说我们看题:现在给你n个骰子,把他们规范的叠起来,叠好后会有一些骰子的面被遮住,现在问你怎么叠没被遮住的那些面的点数和最大? 说明:叠的时候不能错开的叠,也就是说两个面要满满的叠住。并且叠在地上的那面也算被遮住的。Do you know?
上面这个叠法就不合法。 骰子:每个面点数分别是:1,2,3,4,5,6 1点的对面是6点,2的对面是5点,3的对面是4点,
各自的位置关系再看图。
输入
输入多组数据。 输入给定骰子的数目n,1<=n<=1000000。
输出
输出没被遮住的那些面的点数最大和。每个数据之间换行。
样例输入
1
3
5
9
样例输出
20
51
81
141
题解:此题根据所给出的数据来套规律,除1为20外(1放在地上),其他都可套用以下公式(1+2+3+4+5+6=21)
公式:21*n-((n-3)/2+1)*12 = 15 *n + 6
/* 3 : 21*3 - 12
5 : 21*5 - 12*2
7 : 21*7 - 12*3
9 : 21*9 - 12*4
*/
#include<iostream> #include<cstdio> using namespace std; int main() { int n; while(~scanf("%d",&n)) { if(n==1) printf("20\n"); else printf("%d\n",15*n+6); } return 0; }