1. 请同学们认真做题,本系统提供查重服务。
  2. 账号或者题目有问题,可以联系任课老师或者发邮件至real251024@163.com
  3. vscode下载地址:https://code.visualstudio.com/
  4. codeblocks下载地址:http://vlab.csu.edu.cn/oj/download/codeblocks-setup.exe
  5. DevC++下载地址:http://vlab.csu.edu.cn/oj/download/DevC_Setup.exe
Problem1749--填数游戏(10分)

1749: 填数游戏(10分)

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 128 MB

Description

小南是个素数爱好者,设计了一种与素数有关的填数游戏。该游戏的要求是:输入一个长度为n(1≤n≤10000)的数字串(由数字1~9组成,没有数字0)和一个正整数m(1≤m≤4),将数字串从左边开始,每取m位数字构成一个整数保存起来,剩余的不够m位的也构成一个整数。接下来,他将这些整数ai 按照以下四种特性进行分类:

11类:整数ai 是素数,素数是指除了1和本身外不能被其他数整除的正整数,2是最小的素数。

22类:整数ai 组成的各位数字之和是素数,如整数11的数字之和为2,是素数,满足该条件。

33类:整数ai 组成的各位数字中至少有一个是素数,如整数123中,有素数数字2,满足该条件。

44类:不满足前3类的其他整数。

数据分类按照1类、2类、3类和4类的顺序进行。例如整数223虽然满足1类、2类和3类特性,按照顺序归入1类;25满足2类和3类特性,按照顺序归入2类。接下来小南将这4类整数分别填入一个k*k的方阵中,k为奇数,满足3≤k≤101。该方阵用星号*”分割成上三角形、左三角形、下三角形和右三角形四个部分,上三角形填入1类整数、左三角形填入2类整数、右三角形填入3类整数、下三角形填入4类整数。填数的过程按照整数出现的顺序从上到下从左至右进行,如果填不满则填充数字0,每个数据输出占5位,右对齐,方阵k的选择要求所有数据都可以按照要求填入且填入的0的个数最少。

说明:当输入的n位数字串为123456789123456789,输入的m2时,整数分割情况如下:

      1类整数:23、6789

      2类整数:123456

      3类整数:7845

      4类整数:91

选定的k5时的填充情况如图1所示,选定的k7时的填充情况如图2所示。根据题目要求填入的0的个数最少,则图1是正确的结果。


 

现有给定的n位数字串和正整数m,请你帮助小南编程实现输出正确的填充结果。

Input

        多样例。 每个样例输入一行包含一个n(1≤n≤10000)位数字串(由数字1~9组成,没有数字0)和正整数m(1≤n≤4)

Output

每个样例按照填充要求输出一个正确的方阵图。输出的整数和星号*的位数都是5位,右对齐。每两个样例的输出结果之间用一个空行分开。

Sample Input Copy

123456789123456789 2
1234567 1

Sample Output Copy

    *   23   67   89    *
   12    *    0    *   78
   34   56    *   45    0
    0    *   91    *    0
    *    0    0    0    *

    *    2    3    5    *
    0    *    7    *    0
    0    0    *    0    0
    0    *    1    *    0
    *    4    6    0    *

Source/Category