1.绿地装饰
 
湖南中医药大学坐落于中国历史文化名城长沙,是湖南省重点建设本科院校,是全国首批设立国家级重
 点学科的高校,也是首批招收博士研究生、留学生及港澳台学生的中医药院校。学校现有 2 个校区,占
 地面积 1393 亩,建筑面积 52 万平方米,主校区依岳麓南坡,临湘江西岸,环境幽雅,风光秀丽,是求
 学成才的理想之地。
 校园景观设计师小 W 的主要工作就是植被环境的设计维护,他有一个 N×N 的模板图,他创作景观的步
 骤如下:
 1、将当前的绿地分成 N×N 小块,再按照模板图添加装饰(黑色表示有装饰,白色表示没有);
 2、对于每个白色(未被装饰)的地块,递归操作 1,应用模板图,即分成更小的 N×N 块,继续进行装
 饰,而黑色(已装饰)的地块则不必操作。
 
下图是某次装饰过程的示意图。
 

 
现在你的任务是求出 K 次递归后的绿地状态。
 
输入
 
单组数据。
 第一行两个数 N,K,如题意中的描述。
 接下来是一个 N×N 的模板图,’ . ’ 表示白色,’ * ’ 表示黑色。
 2 ≤ n ≤ 3
 1 ≤ k ≤ 5
 
 
输出
 
输出一个 N K×N K 的矩阵表示答案,不允许有多余的空行或空格。
 
样例输入 Copy
 
2 3
.*
..
 
样例输出 Copy
 
.*******
..******
.*.*****
....****
.***.***
..**..**
.*.*.*.*
........
 
 
相关代码
 
| 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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | importjava.math.BigDecimal;
 importjava.text.DecimalFormat;
 importjava.util.ArrayList;
 importjava.util.List;
 importjava.util.Random;
 importjava.util.Scanner;
 publicclassMain {
 publicstaticvoidmain(String[] args) {
     // TODO Auto-generated method stub
 intn1,n2,i,j,t;
 String s1,s2;
     Scanner in=newScanner(System.in);
     
 while(in.hasNext()) {
     s1=in.nextLine();
     s2=in.nextLine();
     n1=s1.length();
     n2=s2.length();
 inta[][]=newint[n1][n2];
 t=0;
 for(i=0;i<n1;i++) {
     if(s1.charAt(i)==s2.charAt(0))
     a[i][0]=1;
     else
     a[i][0]=0;
     if(a[i][0]>t)
         t=a[i][0];}
 for(i=0;i<n2;i++) {
     if(s2.charAt(0)==s2.charAt(i))
     a[0][i]=1;
     else
         a[0][i]=0;
     if(a[0][i]>t)
         t=a[0][i];}
 for(i=1;i<n1;i++) {
     for(j=1;j<n2;j++) {
         if(s1.charAt(i)==s2.charAt(j)) {
             a[i][j]=a[i-1][j-1]+1;
             }
         else
             a[i][j]=0;
         if(a[i][j]>t)
             t=a[i][j];
     }}
 System.out.println(t);
 }
 }
 }
 /**************************************************************
     Problem: 1461
     User: 202001020149
     Language: Java
     Result: 正确
     Time:383 ms
     Memory:18652 kb
 ****************************************************************/
 | 
 
 
2.XP的演讲比赛
 
题目描述
 
XP参加了学校的演讲比赛,比赛共分为两轮,每一轮比赛得分各占总得分的50%。在最终结果公布之前,XP只知道在两轮的排名情况,但不知道具体分数,最终结果将按照两轮总得分升序排列。聪明的你能够告诉XP,他最喜欢的G在最终排名中可能得到的最好名次和最差名次吗?
 
输入
 
第一行输入n,表示参赛选手的人数(n<=26)
 
第二行输入n个字符,表示第一轮的排名情况
 
第三行输入n个字符,表示第二轮的排名情况
 
输出
 
输出一行 两个数分别为G的最好名次和最差名次,用空格隔开
 
样例输入 Copy
 
10
A B C D E F G H I J
A C I G E F J H D B
 
样例输出 Copy
 
3 8
 
| 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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | importjava.util.List;
 importjava.util.Scanner;
 publicclassMain {
     
         
     
 publicstaticvoidmain(String[] args) {
     // TODO Auto-generated method stub
     intn,i,j,c1=0,c2=0,b1=0,b2=0;
     
     String s1,s2,s3;
     chars4=' ';
     Scanner in=newScanner(System.in); 
     
 n=in.nextInt();
 s1=in.nextLine();
 s2=in.nextLine();
 s3=in.nextLine();
     for(i=0;i<s2.length();i++) {
         if(s2.charAt(i)=='G') {
         b1=i;
         
             }
     }
     for(i=0;i<s3.length();i++) {
         if(s3.charAt(i)=='G') {
         b2=i;
             }
     }
     
 for(i=0;i<b1;i++) {
     for(j=0;j<b2;j++) {
         if(s2.charAt(i)==s3.charAt(j)&&s2.charAt(i)!=s4) {
             c1++;
         }
     }
 }
 for(i=b1+1;i<s2.length();i++) {
     for(j=b2+1;j<s3.length();j++) {
         
         if(s2.charAt(i)==s3.charAt(j)&&s2.charAt(i)!=s4) {
             c2++;
         }
     }
 }
 c1=c1+1;
 c2=n-c2;
 System.out.println(c1+" "+c2);
 }
 }
 /**************************************************************
     Problem: 1383
     User: 202001020149
     Language: Java
     Result: 正确
     Time:795 ms
     Memory:20720 kb
 ****************************************************************/
 | 
3.解密
 
题目描述
 
湖南中医药大学有含浦、东塘 2 个校区,学校办学历史悠久,前身为 1934 年的湖南国医专科学校,1953
 年创办湖南中医进修学校,1960 年创建普通高等本科院校——湖南中医学院,1979 年成为全国首批取得
 中医类研究生学历教育资格的院校,1990 年原湖南科技大学成建制并入湖南中医学院,2002 年与湖南省
 中医药研究院合并,2006 年经教育部批准更名为湖南中医药大学,2012 年进入湖南省一本招生序列。
 目前,学校与湖南省中医药研究院实行校院合一的管理体制。学校学科门类齐全、中医药特色鲜明。学校
 设有 18 个学院、24 个本科专业,涵盖医、理、工、管、文等 5 大学科门类。中医诊断学在本学科研究领
 域居国内领先水平。
 小 F 居住在含浦校区,他想和东塘校区的同学小 L 聊天,为了保证沟通安全,他发明了一种加密方式,这
 种加密方式是这样的:对于一个 01 串,小 F 会将其从左到右每 8 位分成一组,最后一组可能不足 8 位,
 对每组进行逆序操作,即如果原来是 bLbL+1bL+2 · · · bR−1bR, 逆序之后变成 bRbR−1bR−2 · · · bL−1bL。现在
 小 F 已经加密好了一个串,并且将其发给了小 L,你能帮助小 L 得到这串密文对应的原始信息吗?
 
输入
 
单组数据。
 一行一个 01 串,代表加密后的字符串,串长度大于 0, 小于等于 100。
 
输出
 
一行字符串,代表加密后的字符串所对应的原始信。
 
样例输入 Copy
 
100010110011101
 
样例输出 Copy
 
110100011011100
 
 
 
| 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 | importjava.util.*;
 publicclassMain{ 
     publicstaticvoidmain(String[] args) { 
        String st1;
     intn,i,k,b,t;
     
     Scanner in=newScanner(System.in);
     
     st1=in.nextLine();
     n=st1.length();
     charc[]=st1.toCharArray();
     b=n%8;
     if(b==0){
     for(i=0;i<n/8;i++){
     for(k=7;k>=0;k--){
    System.out.print(c[k+i*8]); }
     }
   }  
 elseif(b!=0){
 for(i=0;i<n/8;i++){
     for(k=7;k>=0;k--){
     System.out.print(c[k+i*8]);}
     }
 for(i=n-1;i>=n-b;i--)
 System.out.print(c[i]);
 }
     
 }}
 /**************************************************************
     Problem: 1369
     User: 202001020149
     Language: Java
     Result: 正确
     Time:1675 ms
     Memory:18664 kb
 ****************************************************************/
 | 
4.XP的三角形
 
题目描述
 
XP最喜欢的图形是三角形,最近他在研究直角三角形,他想到这么一个问题,如果三边长{a,b,c}均为整数的直角三角形周长为p,(a<=b<=c)当p = 120时,恰好存在三个不同的解:{a=20,b=48,c=52}, {a=24,b=45,c=51}, {a=30,b=40,c=50}。现在给定一个p求不同的解的个数。(p<=1000)
 
输入
 
单组输入数据
 
p
 
输出
 
输出一行结果
 
样例输入 Copy
 
120
 
样例输出 Copy
 
3
 
 
 
| 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 | importjava.util.List;
 importjava.util.Scanner;
 publicclassMain {
 publicstaticvoidmain(String[] args) {
     // TODO Auto-generated method stub
     intp,i,j,k,count=0;
     Scanner in=newScanner(System.in);
 p=in.nextInt();
 for(i=1;i<p/3;i++) {
     for(j=1;j<p/2;j++) {
         k=p-i-j;
         if(i*i+j*j==k*k&&k<i+j) {
             count++;
         }
     }
 }
 System.out.println(count);
 }
 }
 /**************************************************************
     Problem: 1381
     User: 202001020149
     Language: Java
     Result: 正确
     Time:995 ms
     Memory:18720 kb
 ****************************************************************/
 |