【ACM】P2020、P2021、P2022、P2023、P2024代码演示

【P2020问题概述】绝对值排序 :


 /*** 绝对值排序 
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 79949    Accepted Submission(s): 38091


Problem Description
输入n(n<=100)个整数,按照绝对值从大到小排序后输出。题目保证对于每一个测试实例,所有的数的绝对值都不相等。


Input
输入数据有多组,每组占一行,每行的第一个数字为n,接着是n个整数,n=0表示输入数据的结束,不做处理。 



Output
对于每个测试实例,输出排序后的结果,两个数之间用一个空格隔开。每个测试实例占一行。


Sample Input
3 3 -4 2
4 0 1 2 -3
0


Sample Output
-4 3 2
-3 2 1 0


Author
lcy

 */

代码演示:

package ac;

import java.util.Arrays;
import java.util.Scanner;

public class P2020{
    public static void main(String[] args) {
         Scanner sc=new Scanner(System.in   );
         while(sc.hasNext()){
             //接收n
             int n=sc.nextInt();
             if(n==0){
                 break;
             }
             //new 原数组
             int[] a=new int[n];
             for(int i=0;i<a.length;i++){
                 a[i]=sc.nextInt();
             }
             //new 绝对值后的数组
             int[] b =new int[n];
             for(int i=0;i<b.length;i++){
                 if(a[i]<0){
                     b[i]=Math.abs(a[i]);
                 }else{
                     b[i]=a[i];
                 }
             }
             //排序绝对值数组
             Arrays.sort(b);
            //从原数组中找到与绝对值数组中对应的数值
             for(int i=0;i<b.length;i++){
                 for(int j=0;j<a.length;j++){
                     if(-a[j]==b[i]){
                         b[i]=a[j];
                     }
                 }
             }
             //打印出整个数组
             for(int i=b.length-1;i>=0;i--){
                if(i==b.length-1){
                    System.out.print(b[i]);
                }else{
                    System.out.print(" "+b[i]);
                }
             }
             System.out.println();
         }
    }
}

【P2021问题概述】发工资咯:)


/**
 * 发工资咯:)
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 61443    Accepted Submission(s): 33152


Problem Description
作为杭电的老师,最盼望的日子就是每月的8号了,因为这一天是发工资的日子,养家糊口就靠它了,呵呵
但是对于学校财务处的工作人员来说,这一天则是很忙碌的一天,财务处的小胡老师最近就在考虑一个问题:如果每个老师的工资额都知道,最少需要准备多少张人民币,才能在给每位老师发工资的时候都不用老师找零呢?
这里假设老师的工资都是正整数,单位元,人民币一共有100元、50元、10元、5元、2元和1元六种。



Input
输入数据包含多个测试实例,每个测试实例的第一行是一个整数n(n<100),表示老师的人数,然后是n个老师的工资。
n=0表示输入的结束,不做处理。



Output
对于每个测试实例输出一个整数x,表示至少需要准备的人民币张数。每个输出占一行。



Sample Input
3
1 2 3
0


Sample Output
4


Author
lcy


Source
C语言程序设计练习(四) 

 */

代码演示:

package ac;

import java.util.Scanner;

public class P2021 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in    );
        //可以有多测试实例用while
        while(sc.hasNext()){
            //接收数据n
            int n=sc.nextInt();
            if(n==0){
                break;
            }
            //用数组接收n个数据
            int[] a=new int[n];
            int count=0;
            for(int i=0;i<a.length;i++){
                a[i]=sc.nextInt();
                //依次对百位、十位、个位的数字进行判断,确定每个位置上的总数
                int x=a[i]/100;
                int y=a[i]%100/10;
                int z=a[i]%100%10;
                if(y>5){
                    y=1+y-5;
                }else if(y==5){
                    y=1;
                }
                if(z>5){
                    z=1+ ((z-5)%2==0?(z-5)/2:1+(z-5)/2);
                }else if(z<5){
                    z=z%2==0?z/2:z/2+1;
                }else{
                    z=1;
                }
                count+=x+y+z;
                //System.out.println(x+","+y+","+z);
            }
            System.out.println(count);
        }
    }
}

【P2022问题概述】海选女主角:

/**
 * 海选女主角
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 62591    Accepted Submission(s): 27633


Problem Description
potato老师虽然很喜欢教书,但是迫于生活压力,不得不想办法在业余时间挣点外快以养家糊口。
“做什么比较挣钱呢?筛沙子没力气,看大门又不够帅...”potato老师很是无奈。
“张艺谋比你还难看,现在多有钱呀,听说还要导演奥运开幕式呢!你为什么不去娱乐圈发展呢?”lwg在一旁出主意。
嗯,也是,为了生存,就委屈点到娱乐圈混混吧,马上就拍一部激光电影《杭电记忆——回来我的爱》。
说干就干,马上海选女主角(和老谋子学的,此举可以吸引媒体的眼球,呵呵),并且特别规定,演员必须具有ac的基本功,否则直接out!
由于策划师风之鱼(大师级水王)宣传到位,来应聘的MM很多,当然包括nit的蛋糕妹妹等呼声很高的美女,就连zjut的jqw都男扮女装来应聘(还好被安全顾问hdu_Bin-Laden认出,给轰走了),看来娱乐圈比acm还吸引人哪...
面试那天,刚好来了m*n个MM,站成一个m*n的队列,副导演Fe(OH)2为每个MM打了分数,分数都是32位有符号整数。
一开始我很纳闷:分数怎么还有负的?Fe(OH)2解释说,根据选拔规则,头发染成黄色、化妆太浓、穿的太少等等都要扣分数的,扣的多了就可能是负分了,当然,如果发现话语中夹有日语,就直接给-2147483648分了。
分数送上来了,是我做决定的时候了,我的一个选拔原则是,要选一个面试分数绝对值(必须还是32位整数)最大的MM。
特别说明:如果不幸选中一个负分的MM,也没关系,因为我觉得,如果不能吸引你,那要想法恶心你。



Input
输入数据有多组,每组的第一行是两个整数m和n,表示应聘MM的总共的行列数,然后是m行整数,
每行有n个,m和n的定义见题目的描述。



Output
对于每组输入数据,输出三个整数x,y和s,分别表示选中的MM的行号、列号和分数。
note:行号和列号从一开始,如果有多个MM的分数绝对值一样,那么输出排在最前面的一个
(即行号最小的那个,如果行号相同则取列号最小的那个)。 



Sample Input
2 3
1 4 -3
-7 3 0


Sample Output
2 1 -7


Author
lcy


 */

代码演示:

package ac;

import java.util.Scanner;

/**
 * 
 *@author <a"283505495@qq.com">lxd</a>
 *@version 1.0 2017-5-18 上午8:26:25
 *@fileName P2022.java
 */
public class P2022 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        //输入数据有多组实例
        while(sc.hasNext()){
            //接收m,n
            int m=sc.nextInt();
            int n=sc.nextInt();
            //接收m行n列数据到a数组中
            int[][] a=new int[m][n];
            //初始化max,位置(mi,mj)
            int max=a[0][0];
            int mi=0,mj=0;
            for(int i=0;i<m;i++){
                for(int j=0;j<n;j++){
                    a[i][j]=sc.nextInt();
                    //利用绝对值比较
                    if(Math.abs(a[i][j])>max){
                        max=Math.abs(a[i][j]);
                        mi=i;
                        mj=j;
                    }
                }
            }
            System.out.println((mi+1)+" "+(mj+1)+" "+a[mi][mj]);
        }
    }
}

【P2023问题概述】:求平均成绩

/**
 * 求平均成绩
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 124329    Accepted Submission(s): 28436


Problem Description
假设一个班有n(n<=50)个学生,每人考m(m<=5)门课,求每个学生的平均成绩和每门课的平均成绩,
并输出各科成绩均大于等于平均成绩的学生数量。



Input
输入数据有多个测试实例,每个测试实例的第一行包括两个整数n和m,分别表示学生数和课程数。
然后是n行数据,每行包括m个整数(即:考试分数)。



Output
对于每个测试实例,输出3行数据,第一行包含n个数据,表示n个学生的平均成绩,结果保留两位小数;
第二行包含m个数据,表示m门课的平均成绩,结果保留两位小数;第三行是一个整数,
表示该班级中各科成绩均大于等于平均成绩的学生数量。
每个测试实例后面跟一个空行。



Sample Input
2 2
5 10
10 20


Sample Output
7.50 15.00
7.50 15.00
1


Author
lcy

 */

代码演示:

package ac;

import java.util.Scanner;

public class P2023{
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            int n=sc.nextInt();
            int m=sc.nextInt();
            double[][] a=new double[n+2][m+1];
            //int[][] a=new int[n+2][m+1];
            for(int i=0;i<a.length-2;i++){
                for(int j=0;j<a[i].length-1;j++){
                    a[i][j]=sc.nextInt();
                    //n个学生的总成绩
                    a[i][a[i].length-1]+=a[i][j];//注意此处遇到过一个坑:a[i][a.length-1]+=a[i][j];
                    //m科总成绩
                    a[a.length-2][j]+=a[i][j];
                    //m科平均成绩
                    a[a.length-1][j]=a[a.length-2][j]/(i+1);
                }
            }


            //打印出n个学生的成绩
            for(int i=0;i<a.length-2;i++){
                if(i==0){
                    System.out.print("");
                }else{
                    System.out.print(" ");
                }
                System.out.printf("%.2f",a[i][a[i].length-1]/m);
            }
            System.out.println();
            //打印出m个平均成绩
            for(int j=0;j<a[0].length-1;j++){
                if(j==0){
                    System.out.print("");
                }else{
                    System.out.print(" ");
                }
                System.out.printf("%.2f",a[a.length-1][j]);
            }
            System.out.println();
            /**打印出高于平均成绩的人数count
            思路:
            统计每科高于平均成绩的科目数k,如果k==m,则count++
            */
            int count=0;
            for(int ii=0;ii<a.length-2;ii++){
                int k=0;
                for(int j=0;j<a[ii].length-1;j++){
                    if(a[ii][j]>=a[a.length-1][j]){
                        k++;
                    }
                }
                if(k==m){
                    count=count+1;
                }
            }
            System.out.println(count);
            System.out.println();
        }
    }
}

运行结果:这里写图片描述

[P2024问题概述]:C语言合法标识符

/**
 * C语言合法标识符
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 72031    Accepted Submission(s): 27939


Problem Description
输入一个字符串,判断其是否是C的合法标识符。



Input
输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。



Output
对于每组输入数据,输出一行。如果输入数据是C的合法标识符,则输出"yes",否则,输出“no”。



Sample Input
3
12ajf
fi8x_a
ff  ai_2


Sample Output
no
yes
no


Author
lcy

 * 
 */

代码演示:

package ac;
import java.util.Scanner;

public class P2024{
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        //接收所测试的行数
        int n=sc.nextInt();
        //吸收多余的输入
        sc.nextLine();
        //判断n行字符串
        for(int j=0;j<n;j++){
            //接收字符串
            String str=sc.nextLine();
            //处理字符
            char[] chs=str.toCharArray();
            //是否为标记符
            boolean flag=false;
            char ch=str.charAt(0);
            //判断第一个字符是否符合规则
            if(ch>='a'&&ch<='z'|| ch>='A'&&ch<='Z'||ch=='_'    ){
                //判断n-1个字符是否符合规则
                for(int i=1;i<chs.length;i++){
                    if(chs[i]>='a'&&chs[i]<='z'|| chs[i]>='A'&&chs[i]<='Z'|| chs[i]>='0'&&chs[i]<='9'|| chs[i]=='_'  ){
                        flag=true;
                        continue;
                        //System.out.print("【"+chs[i]+"】");
                    }else{
                        flag=false;
                        break;
                        //System.out.print("《"+chs[i]+"》");
                    }
                }
            }else{
                flag=false;
            }

            //按照flag值输出判断结果
            if(flag){
                System.out.println("yes");
            }else{
                System.out.println("no");
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QorIQ P2平台系列包含P2020与P2010通信处理器,可实现单线程极高性能功耗比,适用于联网、电信、军事以及工业领域中的各种应用。 在45nm技术低功耗平台上,该系列产品最高可实现1.2 GHz双核以及单核频率。 QorIQ P2系列由双核、单核产品组成,这些产品在引脚上兼容QorIQ P1平台产品,提供了一套五款可互换的高性价比解决方案。 可从单核533 MHz(P1011)扩展至双核1.2 GHz(P2020),在相同的引脚分配中,两个QorIQ平台可实现4.5倍超强总频率范围。 两个系列中的这些设备在软件上互相兼容,它们均采用e500 Power Architecture核心与外设,与现有的PowerQUICC®处理器在软件上完全兼容。 这让用户能够在一块电路板设计中创造出具有多个性能点的产品。 P2020与P1020处理器支持对称于非对称式多任务处理,让用户能够通过线程级或应用程序级的并行机制来提升性能。 P2020与P2010通信处理器均具备先进的特性集,非常易于使用。 集成的安全引擎支持联网以及无线应用中所使用的一般安全算法,例如IPSec以及Kasumi。 64b存储控制器可提供能够满足未来需要的存储器技术移植,支持DDR2和DDR3。 它还支持误差校正码,这是所有高可靠性系统都必不可少的。 通过16b本地总线、USB、SD/MMC以及SPI,还支持闪存等其它类型的存储器。 QorIQ P2系列集成了一套丰富的接口,其中包括SerDes、千兆以太网、PCI-Express、RapidIO®技术以及USB。 三个10/100/1000以太网端口支持先进的数据包分析、流量控制以及服务质量等特性以及IEEE® 1588时间标志。 四个SerDes巷道可在两个串行RapidIO端口、三个PCI Express端口以及两个SGMII端口之间进行分配。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值