2017年成都东软学院ACM冬季校赛(正式赛)

Problem A: A Simple Math Problem

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 3   Solved: 1
[ Submit][ Status][ Web Board] [ Edit] [ TestData]

Description

PingTou now is thinking about a simple function f(x).The funcion f(x) is a piecewise function.

If x < 10 f(x) = x.

if x >= 10 f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + ...... + a9 * f(x-10);

S(x) = f(1) + f(2) + f(3) + ......+ f(x);

The f(x) will be too large. So the f(x) modulo to m.

And ai (0 <= i <= 9) can only be 0 or 1.

Now, I will give a0~a9 and two positive integers k and m,and could you help PingTou to caculate S(k) % m.

Input

The problem contains mutiple test cases.Please process to the end of file.

In each case, there will be two lines.

In the first line , there are two postive integers k and m.(k < 2*10^9 , m < 10^5)

In the second line , there are ten integers represent a0 ~ a9.

Output

For each case, out put S(k) % m in one line.

Sample Input

10 9999
1 1 1 1 1 1 1 1 1 1
20 500
1 0 1 0 1 0 1 0 1 0

Sample Output

90
175

题目大意:

如题,求fx 的前缀和

题目思路:

这题x的范围是2e9 所有用数组存起来内存开不下,时间也会超时,所以普通的方法过不到这题,

这里我们要用到线性代数里面矩阵的乘的运算,

我们构造两个矩阵

 f9 f8 f7 f6 f5 f4 f3 f2 f1 f0 s8                     a0   1    0   0    0   0   0   0   0   0   1       

0  0 0 0 0 0 0 0 0 0 0                                a1   0    1   0    0   0   0   0   0   0   0   

0  0 0 0 0 0 0 0 0 0 0                                a2   0    0   1    0   0   0   0   0   0   0   

0  0 0 0 0 0 0 0 0 0 0                               a3   0    0   0    1   0   0   0   0   0   0   

0  0 0 0 0 0 0 0 0 0 0                               a4   0    0   0    0   1   0   0   0   0   0   

0  0 0 0 0 0 0 0 0 0 0                              a5   0    0   0    0   0   1   0   0   0   0   

0  0 0 0 0 0 0 0 0 0 0                              a6   0    0   0    0   0   0   1   0   0   0   

0  0 0 0 0 0 0 0 0 0 0                              a7   0    0   0    0   0   0   0   1   0   0   

0  0 0 0 0 0 0 0 0 0 0                             a8   0    0   0    0   0   0   0   0   1   0   

0  0 0 0 0 0 0 0 0 0 0                             a9   0    0   0    0   0   0   0   0   0   0   

0  0 0 0 0 0 0 0 0 0 0                              0     0    0   0    0   0   0   0   0   0   1   

前面的是Matrix1  后面的是Matrix2

所以 ans = Matrix1 * Matrix^k

Matrix^k  用快速幂来算只需算logk 次  每次运算是11*11*11  所以复杂度是11^3*logk

答案就是ans[0][10]%m


Problem B: Baldheaded stronger

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 50   Solved: 3
[ Submit][ Status][ Web Board] [ Edit] [ TestData]

Description

东软的校门外长度为L的马路上很有多颗树,每两棵相邻的树之间的间隔是1米。我们可以简化的把马路看成一个数轴,马路的一端在数轴中x=0的位置,另一端在x=L的位置;数轴上的每个整数点即0,1,2,3......L,都种有一棵树。现在光头强——平头!出现了。他要把其中一些区域中的树全部砍走。已知任一区域中的起点和终点都是整数,区域之间可能有重合的部分。现在你的任务是计算这些树被平头砍走后,马路上还剩下多少棵树。

Input

题目数据有多组,对于每组的数据:

第一行输入两个数L(1 <= L <= 500000)和m(1 <= m <= 10000)。L代表马路的长度,m代表平头要砍树的区域数目。

然后接下来m行中每行有两个数left和right(0 <= left <= right <= L),表示一个区域的起点和终点坐标。

Output

对于每组测试数据输出一个数,表示马路上剩余树的数目。

Sample Input

500 3
150 300
100 200
470 471

Sample Output

298

题目大意:

如题

题目思路:

这道题你们有三种方法可以过 第一种线段树(区间更新),第二种树状数组(区间更新,单点查询)第三种(标记+前缀和)

这里我只讲第三种,这道题首先用个数组表示这个点有没有被删除,然后每次删除都把这个区间内的数都加一,重复删除不管,因为最后面只用求为0的点

的个数,对于删除 [ l, r]  我们让a[l] +1  a[r+1] -1 然后最后面在让a求一次前缀和后 a[i] 就是这个点被删除了几次,这里可以手动模拟下因为删除区间的内的前缀和

只加了1 而在区间外没有加这个1 ,l之前没有1 ,r后有个加一,有个减一 抵消了 


Problem C: Caculate The Sum

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 112   Solved: 14
[ Submit][ Status][ Web Board] [ Edit] [ TestData]

Description

WYQ是个很热心的学姐,她想把自己所学的知识都教给你们。WYQ学姐很喜欢数组,所以争抢着要给你们讲数组的知识,现在要考核你们一个简单的数组的查询知识,WYQ学姐相信你们连数组排序这么难的知识都学会了,这个查询应该是个小case!。现在WYQ学姐给你一个长度为n的数组序列(a1,a2,a3...an),她今天不想排序了,只有m次查询,每次查询有a,b两个数字,让你求下标从a到b 的数组序列的和。

Input

第一行输入两个数n,m(n<=1000000,m<=100000)

然后n个数字ai(0<=ai,ai<=100000000)

然后m行查询,每行两个数字a,b(1 <= a <= b <= n)

Output

对于每次查询,输出下标从a到b的序列的和Sn

Sample Input

5 31 2 3 4 51 52 31 4

Sample Output

15510

HINT

 

题目大意:

如题

题目思路:

这题只要用个数组s记录数组a的前缀和 所以 答案就是 s[b]-s[a-1]  s[i] = a[1]+a[2]+...a[i] 这个可以一个循环来求



Problem D: Different character

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 98   Solved: 54
[ Submit][ Status][ Web Board] [ Edit] [ TestData]

Description

“魔镜,魔镜,快告诉我谁是最漂亮的女人!”

“肯定是你们当之无愧的毛毛雨学姐!”

毛毛雨学姐喜欢照镜子,因为镜子中的东西与现实是相反的。

所以现在毛毛雨学姐想请学编程的你帮她很快的计算出。一个字符串中有多少个大写字符是在镜子中相反的呢?

Input

第一行输入一个正整数T(T<=10)表示测试数据的组数

每一组测试数据输入一个字符串 s (lenth <= 80)

Output

对于每一组测试数据输出在镜子中相反的大写字符个数n

Sample Input

2
ACMICPC
NEUSOFT

Sample Output

4
4

题目大意:如题

题目思路:

只要找出所有在镜子中相反的字母  B C D E F G J K L N P Q R S Z 



Problem E: Easy multiplication

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 340   Solved: 84
[ Submit][ Status][ Web Board] [ Edit] [ TestData]

Description

除了A + B以外最简单的代码就是 A * B了,但是A * B简不简单呢?

Input

测试数据有多组,对于每组测试数据:

输入两个正整数A , B (0 <= A , B<= 2^31)当A和B都为0的时候结束文本

Output

输出A * B的值

Sample Input

1 2
3 4
0 0

Sample Output

2
12

题目思路:如题

题目大意:

直接输出a*b 就是long long 就行




Problem F: Fortunate of GCD

Time Limit: 3 Sec   Memory Limit: 128 MB
Submit: 2   Solved: 1
[ Submit][ Status][ Web Board] [ Edit] [ TestData]

Description

Xiang has N numbers in a line. At first, they are all equal to 1. Besides, Xiang is interested in primes. He will choose a continuous subsequence [l , r] and a prime parameter x each tine and for every l <= i <= r, he will change ai into ai*x. To simplify the problem, x will be 2 or 3. After m operations, Xiang wants to know what is the greatest common divisor of all the numbers.

Input

The first line contains an integer T (1 <= T <= 10) representing the number of test cases.

For each test case, the first live contains two integers N (1 <= N <= 100000) and m (1 <= m <= 100000), where N refers to the length of the whole sequence and m means there are m operations.

The following m lines, each line contains three integers li (1 <= li <= N), ri (1 <= ri <= N), xi (2 <= xi <= 3), which are referred above.

Output

For each test case, print an integer in one live, representing the greatest common divisor of the sequence. Due to the answer might be very large, print the answer modulo 998244353.

Sample Input

2
5 3
1 3 2
3 5 2
1 5 3
6 3
1 2 2
5 6 2
1 6 2

Sample Output

6
2

题目大意:

给你一个长度为n的数组,都为1 ,然后m次操作,每次操作选择区间[l,r] 都乘以2或3 然后最后输出所有数的最大公约数

题目思路:

首先我们分别来考虑乘2和乘3 然后设ans2 是乘2的gcd  ans3 是乘3的gcd 最后答案就是 ans2*ans3 

因为2和3互质 他们的倍数依然互质所以答案就是相乘  即 考虑2^x 与 3^y 有没有大于1的公约数 

这里可以知道2^x的约数全是偶数  3^y 的约数全是奇数,偶数和奇数不可能相等,

所以不存大于1的gcd 所以成立

然后我们考虑2  首先数组内的值都是1 = 2^0  没乘一次2就是指数加一  最后数组就变成2^a1 ,2^a2,2^a3 , 2^a4 , ,,,,2^an 

他们的gcd就是最小的那个数 即2^Min(a1,a2,a2,,,,an)  这里证明下就是首先考虑 2^x 和 2^y 的gcd  

很好变换得到 2^x = 2^(y+z)   即 2^x = 2^y*2^z  所以小的那个数就是大的那个数的约数

因此扩展到一般情况下 任何一个数都是其他比他小的数的倍数,因此最小的那个数就是gcd

同理3的情况也一样

然后就转换成就是区间内乘以2和乘以3的次数最小的值

这里处理的方法和B题是一样的,即a[l]+1,a[r+1]-1

然后求前缀和



Problem G: Go to trip

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 368   Solved: 25
[ Submit][ Status][ Web Board] [ Edit] [ TestData]

Description

“我想要带你去浪漫的土耳其,然后一起去东京和巴黎!

     其实我特别喜欢迈阿密,有和黑人的洛杉矶!! ”

平头想要带你去旅行,一起去浪漫的土耳其,然后去东京,巴黎,迈阿密还有洛杉矶。但是由于前段时间平头出去浪了一圈资金有点紧张。所以只够带你去浪漫的土耳其了。小平头刚考到驾照,所以想开上共享汽车从东软载你去土耳其(想想就很浪漫)。

假设东软到土耳其有直线通路,长度为520km(即坐标轴上东软为0,土耳其为520)。总所周知,共享汽车虽然很浪漫,但是他是用电的,假设充满电的情况最多能开100km就没电了。现在告诉你有n个充电站,并给你n个充电站的坐标。问平头能否带你去浪漫的土耳其玩耍并且回来呢?(刚开始是充满电的汽车)

Input

测试数据有多组:

每组测试数据第一行输入一个整数n(n <= 520),表示充电站的个数。如果n等于0结束文本

接下来n行每行输入一个整数xi(0 <= xi <= 520),表示每个充电站的坐标

Output

如果小平头能带你去浪漫的土耳其那么输出“POSSIBLE”

否则输出“IMPOSSIBLE”

Sample Input

2
0
200
6
0
100
200
300
400
500
0

Sample Output

IMPOSSIBLE
POSSIBLE

题目大意:如题

题目思路:

首先题目没有说加油站的x坐标是升序,所以我们应该先将坐标升序排下序,然后就是判断起点到第一个加油站,加油站到下一个加油站

        之间的距离是不是小于等于100和最后一个加油站到终点的距离小于等于50因为要回来




Problem H: How Many Prime

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 411   Solved: 106
[ Submit][ Status][ Web Board] [ Edit] [ TestData]

Description

In natural numbers there are a bunch of special numbers - prime numbers. Because they can only be divisible by 1 or themselves.Big Gragon like prime numbers. Big Gragon think the prime is as unique as his goddess. Now, Big Gragon want to print all primes less than 2017.(include 2017)

Input

This question no input

Output

print all primes less than 2017.one line for each number.


题目大意:如题

题目思路:n^2找出所有小于等于2017的素数就是




Problem I: In people's world

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 60   Solved: 16
[ Submit][ Status][ Web Board] [ Edit] [ TestData]

Description

方方土在双十一的时候剁手买了很多的东西,但是他作为一个忠实的彩民,当然也在双十一买了很多彩票。毕竟“在人间,有谁活着.......”他觉得终将有一天他会中奖的,终于在这一次的彩票中他真的中奖了。接着他用中奖的钱去买了一幢楼。这幢楼有一个很神奇的电梯。大楼的每一层楼都可以停电梯,而且第i层楼(1 <= i <= N)上有一个数字Ki(0 <= Ki <= N)。电梯只有四个按钮:开、关、上、下。上下的层数等于当前楼层上的那个数字。当然,如果不能满足要求,相应的按钮就会失灵。例如:3 3 1 2 5代表了Ki(K1 = 3, K2 = 3....),从1楼开始。在1楼,按“上”可以到4楼,按“下”是不起作用的,因为没有-2楼。那么,从A楼到B楼至少要按几次按钮呢?(方方土很懒,不愿意走楼梯,所以才长肥了)

Input

测试数据有多组,对于每组测试数据:

第一行为三个用空格隔开的正整数,表示N,A,B(1 <= N <= 200, 1 <= A ,B <= N)

第二行为N个用空格隔开的正整数,表示Ki

Output

对于每组测试数据输出仅一行,即最少按键的次数,若方方土无法从A楼到达B楼,则输出-1

Sample Input

5 1 5
3 3 1 2 5

Sample Output

3

题目大意:如题

题目思路:

题目最后就是转换成从a层到b层的最短时间,所有我们开始建图,考虑第i层电梯能走x层 

       所以如果i-x>0就是建一条从i到i-x的边  如果i+x<=n 就建一条i到i+x的边 最后最短路跑一下就是

     


Problem J: Just print it

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 71   Solved: 26
[ Submit][ Status][ Web Board] [ Edit] [ TestData]

Description

蛇形矩阵是从1开始的自然数依次排列成的一个上三角矩阵,详情请看题目的样例。

Input

测试数据有多组,每组测试数据:

第一行有一个正整数N组成(1 <= N <= 100)如果N=0结束文本

Output

对于每一组测试数据,输出一个N行的三角矩阵。矩阵中两个数之间有空格。

Sample Input

5
0

Sample Output

1 3 4 10 11
2 5 9 12
6 8 13
7 14
15

题目大意:如题

题目思路:

     首先我们斜着看有多少列,我们可以发现斜着有n列 所以我们外层循环从1-n 而每层有i个数所以我们第二层循环1-i 

    然后我们来找规律我们发现i为奇数1,3,5,,,时数字是从上到下递增的,这里横坐标+1 纵坐标-1的变化 

    而起始横坐标为0 纵坐标为i

    当i为偶数时是从下到上递增  横坐标-1 从坐标+1变化,起始横坐标为i纵坐标为0  

   有了每次的起始坐标和变化规律我们就可以很好的求出每个数的坐标,然后就是循环填数






Problem K: Knowledgeable Zu congzi

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 13   Solved: 5
[ Submit][ Status][ Web Board] [ Edit] [ TestData]

Description

祖冲之(429-500)是中国南北朝时期接触的数学家,天文学家。他计算出了π的精确值,精确到小数点后7位,一千年后,没有数学家能精确的计算出这一个数值。他还算出一年为365.24281481天,这与我们今天所知的365.24219878天非常接近。

在一些传奇故事书中所说道,当祖冲之还是个小男孩时,他喜欢数学游戏。有一天,他的父亲给了他一些木棍作为玩具。从而祖冲之发现了一个很有趣的问题。他想用这些棍子做一些三角形,他希望所有三角形的面积总和尽可能的大。规则是:

    1)三角形只能由3根棍子组成

    2)三角形的顶点必须是木棍的顶点。一个三角形的顶点不能在一个木棍的中间。

    3)祖冲之可以不使用完所有棍子。

但是不幸的是,祖冲之并没有解决这个问题,因为这是一个编程问题,而不是一个数学问题。如果有较多的棍子,没有电脑就无法解决这个问题。所以现在作为小祖冲之的你能否用电脑来解决祖冲之当初的问题呢?

Input

测试数据不超过十组。对于每一组测试数据:

第一行输入一个整数N(3 <= N <= 12),表示你拥有的木棍数目。

第二行输入N个整数Li(1 <= Li <= 100),当N等于0时结束文本。

Output

对于每组测试数据输出能构成的最大的三角形的面积S(保留两位小数)。如果不能构成三角形那么输出0.00

Sample Input

3
1 1 20
7
3 4 5 3 4 5 90
0

Sample Output

0.00
13.64


题目大意:如题

题目思路:

                  这题因为数据不够强导致比赛时有两个队是贪心过得,其实贪心是存在问题的 比如 7 4 4 4 这里贪心的话是选7 4 4 而实际 4 4 4 面积更大

                 这里考的是状压dp ,因为n只有12个,所以我们用12个状态即2^12-1来表示所有的状态

                 首先我们先预处理所有可以组成三角形的状态,三层循环枚举下 如果i,j,k可以组成 ,状态就是2^i | 2^j | 2^k  或运算就是加法

                 然后我们第一层循环所有状态i: 0 -  2^n-1 第二层循环枚举 所有可以组成三角形的方案 j:1-cnt   

                 如果 i&state[j] ==0  (state表示第j中方案的状态 ) 就表示状态i与状态state 没有重叠即没有用到相同的棍子  

                         就 dp[ i | state[j] ] = max(dp[ i | state[j] ],dp[i]+S[j] ) S[j] 表示方案j的面积  

               最后答案就是dp里面的最大值




Problem L: Last one

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 37   Solved: 4
[ Submit][ Status][ Web Board] [ Edit] [ TestData]

Description

“大吉大利!晚上吃鸡!” 相信这句话很多人都喜欢听到,因为这是代表你在绝地求生游戏中获得胜利的意思(游戏中有许多玩家,存活到最后的玩家获得胜利)。

 大龙也喜欢这个游戏,但是技术不怎么好,还常常被毒死呢。所以大龙请教大神LX教他吃鸡技术,在LX的指导下大龙的技术有所提高,终于在一场游戏中坚持(苟)到了最后紧张刺激的时刻,现在只有大龙和另外一个玩家两个人。并且大龙已经发现另一个玩家的位置,而现在有个很尴尬的问题:大龙的M416只剩下最后一发子弹了,另一个玩家有防弹衣但是没有头盔。所以大龙需要一枪打爆头才能获得胜利,成功吃鸡。为了简化问题。现在用一个二维平面表示大龙和另一个玩家(类似愤怒的小鸟),假设角色的头是一个标准的圆,告诉你另一个玩家的身高,头部半径,所站位置的坐标,以及大龙的身高,头部半径,所站位置的坐标,以及枪头所指方向向量。在大龙抬枪瞄准时子弹跟实现基本同线,我们忽略它的距离,就当成同线。而在大龙抬枪瞄准时身体微弯,实现从头心出发,他头部的实际高度比站立时低10%。

你的任务是计算大龙在这一刻扣下扳机,能否一枪击爆另一个玩家的头。注意:这里忽略子弹的直径和重力作用,也就是说子弹是无限小的,弹道是一条笔直的射线,大龙和另一个玩家之间没有障碍物。并且只要子弹擦到头部,哪怕是边缘也算是爆头。

Input

测试数据的第一行有一个正整数T,表示有T组测试数据。

每组测试数据第一行有四个数h1,r1,x1,y1,分别表示另一个玩家的身高,头部半径以及所站的位置。

第二行有六个数h2,r2,x2,y2,x3,y3,分别表示大龙的身高,头部半径,所站位置以及枪头所指的方向向量。

Output

每一组输入数据有对应一行输出。如果大龙能够获得胜利(成功吃鸡),输出YES,否则输出NO。

Sample Input

2
1.62 0.1 10.0 10.0
1.80 0.09 0.0 0.0 1.0 1.0
1.62 0.1 0.0 0.0
1.80 0.09 10.0 10.0 -1.0 -1.0

Sample Output

YES
YES
 

题目大意:如题

题目思路:

                 由题意我们可以知道如下图

                

如图二维平面    假设左边那个是大龙 右边那个是敌人

                         底下那个虚线表示的是坐标 上面的圆是头,大龙的抢从圆心射击方向为方向向量的方向 这里大龙的头要比实际低10% 

                         然后判断子弹能否射击中右边敌人的头

                       这里我们只需计算敌人头的圆心到射击方向这个射线的距离是否小于等于敌人头部的半径,也就是射线与圆有没有交点

                       这里要注意的就是这是一条射线不是直线,所以还需考虑是否相交与延长线,还有用斜率还要考虑斜率是否存在





Problem M: Mahjong

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 25   Solved: 6
[ Submit][ Status][ Web Board] [ Edit] [ TestData]

Description

麻将,起源于中国,粤港澳地区俗称麻雀,由中国古人发明的博弈游戏,娱乐用具,一般用竹子、骨头或塑料制成的小长方块,上面刻有花纹或字样,每副136张。四人骨牌博弈,流行于华人文化圈中。

在明末清初马吊牌盛行的同事,由马吊牌又诞生出一种叫“纸牌”的娱乐用具。纸牌开始共有60张。斗纸牌时,四人各先取十张,以后再依次取牌、打牌。一家打出牌,两家乃至三家同时告知,以得牌在先者为胜。这些牌目几玩法就很像今天的麻将牌了。这种牌戏在玩的过程中始终默不作声,所以又叫默和牌。

最近大龙迷上了打麻将,连三个号的欢乐豆都输完了,但是他总觉得很不自在(一天没打代码了),突然在他的脑海中有了一个idea:自己开发一个打麻将软件,但是想想似乎太麻烦,俗话说万事开头难嘛,所以大龙先从简单的下手,先模拟机器发牌,这个还算简单诶!于是大龙想请你帮他解决这个问题!

为了简化问题这里只有40个麻将,分成四种花色(s,h,p,b),每种花色的麻将有十张(0-9),组合起来为(按顺序组合):s0-s9,h0-h9,p0-p9,b0-b9

现在这40个麻将随机摆放在桌子上,按打麻将的形式四个人每个人面前10个麻将(依次摆放,不叠加在一起),现在给你一个从1到40的排列代表随机发放的40个麻将,此时你坐在正前方,从你面前开始摆放,顺时针从右到左(如下图 数字代表输入数组的下标)

1代表s0,2代表s1,10代表s9.....40代表b9(上面给出的顺序组合)

然后给你两个数n,m。

n表示从你开始数,顺时针数第n个人(包括你)

m表示上面数到的第n个人面前的第m个麻将(顺时针数)开始抓麻将

你先开始抓麻将,每次抓两张,抓5轮,每个人10个麻将。

然后你的程序将输出四行字符串代表四个人抓到的麻将(按抓麻将的顺序输出)从你开始顺时针(用花色+数字的字符输出 如s0s1s2s3s4...)

Input

第一行四十个数(1-40的排列)代表随机发放的麻将

第二行两个数n m(1 <= n <= 5,1 <= m <= 11)

Output

四行字符串代表四个人的麻将

Sample Input

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
1 1

Sample Output

s0s1s8s9h6h7p4p5b2b3
s2s3h0h1h8h9p6p7b4b5
s4s5h2h3p0p1p8p9b6b7
s6s7h4h5p2p3b0b1b8b9

HINT


你抓的麻将:你先抓从你面前右边第一个开始 1 2 9 10 17 18 25 26 33 34 (s0s1s8s9h6h7p4p5b2b3)



上面的图不代表麻将,而且代表输入数组的下标


题目大意:

     如题,给你麻将的发牌顺序和你开始抓麻将的起始位置,然后轮流抓麻将,最后顺序输出每个人抓到的麻将

题目思路:

     这里卡到你们的可能是题目太长不好理解题意,,,

      上图给你的数字代表发牌数组的下标,而发牌数组的值表示的是麻将的编号 1 表示s0 2表示s1 一次类推  如题描述

      现在知道了发牌的顺序了,然后就是求起始位置 如果m=11 就是要从下一个人开始 然后m=1 ,n+1处理下

      如果n>5  n-=4  现在就是从第n个人前面的第m个麻将开始抓   我们可以算出在数组里面对应的下标 即 (n-1)*10+m 

      现在知道了开始在数组抓牌的位置  我们就可以循环来抓麻将了,我们用数组ans[4][20]表示每个人抓到的牌也就是存答案   

      用个数组index[4]表示每个人抓了多少张牌了,我们就可以知道这个人下一次牌存在数组中的下标了,至于将麻将值转换成

      字符有很多种方法可以分类讨论下或者找规律算,

 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值