ccf部分真题答案

因为前段时间参加了学校要求的CCF计算机职业资格认证,那种刷题的感觉倒也蛮爽,所以将我刷过的题都保存在这,没有特殊说明都是100分通过

ccf201612-1中间数


Main.java
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
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int n;
int[] a = new int[1000];
Scanner in = new Scanner(System.in);
n=in.nextInt();
for(int i=0;i<n;i++){
a[i]=in.nextInt();
}
sort(a,n);
MyMethod(a,n);
}
public static void sort(int[] a,int n){
int temp;
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(a[i]>a[j]){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
}
public static void MyMethod(int[] a,int n){
int temp=a[n/2];
int gt=0,lt=0;
for(int i=0;i<n/2;i++){
if(a[i]<temp){
lt++;
}
}
for(int i=(n/2+1);i<n;i++){
if(a[i]>temp){
gt++;
}
}
if(lt==gt){
System.out.println(temp);
}else{
System.out.println(-1);
}
}
}

ccf201612-2工资计算


Main.java
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
package com.example2.hyf;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int t;//税后工资
int s;//税前工资
Scanner in = new Scanner(System.in);
t=in.nextInt();
s=MyMethod(t);
System.out.println(s);
}
public static int MyMethod(int t){
if(t<=3500){
return t;
}else if(t<=4955){
return (int)((t-105)/0.97);
}else if(t<=7655){
return (int)((t-455)/0.9);
}else if(t<=11255){
return (int)((t-1255)/0.8);
}else if(t<=30755){
return (int)((t-1880)/0.75);
}else if(t<=44755){
return (int)((t-3805)/0.7);
}else if(t<=61005){
return (int)((t-6730)/0.65);
}else{
return (int)((t-15080)/55*100);
}
}
}

ccf201609-1最大波动


Main.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.example091.hyf;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int[] a=new int[1000];
int n;
int temp;
Scanner input = new Scanner(System.in);
n=input.nextInt();
for(int i=0;i<n;i++){
a[i]=input.nextInt();
}
temp=Math.abs(a[1]-a[0]);
for(int i=2;i<n;i++){
if(Math.abs(a[i]-a[i-1])>temp ){
temp=Math.abs(a[i]-a[i-1]);
}
}
System.out.println(temp);
}
}

ccf201609-2火车购票


Main.java
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
package com.example092.hyf;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int[] p= new int[100];
int[] seat=new int[101];
int n;
Scanner input = new Scanner(System.in);
n=input.nextInt();
for(int i=0;i<n;i++){
p[i]=input.nextInt();
}
for(int i=0;i<n;i++){
MyMethod(seat,p[i]);
}
}
public static void MyMethod(int[] seat,int p){
int flag=0;
int j;
for(int i=0;i<100;i++){
if(seat[i]==0){
j=i+1;
while(j%5!=0){
j++;
}
if((j-i)>=p&&j<=100){
flag=1;
for(int k=i;(k-i)<p;k++){
seat[k]=1;
if((k-i)!=(p-1)){
System.out.print(k+1+" ");
}else{
System.out.print(k+1);
}
}
break;
}
}
}
if(flag==0){
for(int i=0;i<p;i++){
for(int q=0;q<100;q++){
if(seat[q]==0){
seat[q]=1;
System.out.print(q+1+" ");
break;
}
}
}
}
System.out.println();
}
}

ccf201604-1折点计数


Main.java
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
package com.example041.hyf;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int n;
int sum=0;
int[] a=new int[1000];
Scanner input = new Scanner(System.in);
n=input.nextInt();
for(int i=0;i<n;i++){
a[i]=input.nextInt();
}
for(int i=0;i<n;i++){
if(i!=0&&i!=(n-1)){
if((a[i]>a[i-1]&&a[i]>a[i+1])||(a[i]<a[i-1]&&a[i]<a[i+1])){
sum++;
}
}
}
System.out.println(sum);
}
}

ccf201604-2俄罗斯方块


这道题只有90分…….汗
Main.java
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package com.example042.hyf;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int[][] tetris = new int[15][10];
int[][] myTries = new int[4][4];
int n;
Scanner input = new Scanner(System.in);
for(int i=0;i<15;i++){
for(int j=0;j<10;j++){
tetris[i][j]=input.nextInt();
}
}
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
myTries[i][j]=input.nextInt();
}
}
n=input.nextInt();
MyMethod(tetris, myTries, n);
}
public static void MyMethod(int [][]tetris,int[][] myTries,int n){
int flag;
int temp=14;
int line = 3;
for(int i=3;i>=0;i--){
flag=1;
for(int j=0;j<4;j++){
if(myTries[i][j]==1){
line=i;
flag=0;
break;
}
}
if(flag==0){
break;
}
}
for(int k=14;k>=0;k--){
int x=line,y=0;
flag=1;
for(int i=k;i>=(k-3);i--){
for(int j=(n-1);j<(n+3);j++){
for(int q=i;q>=0;q--){
if(tetris[q][j]==1&&myTries[x][y]==1){
flag=0;
break;
}
}
if(flag==0){
break;
}
y++;
}
x--;
y=0;
if(flag==0){
x=line;
y=0;
break;
}
}
if(flag==1){
temp=k;
break;
}
}
for(int i=temp,x=line;i>=(temp-line);i--,x--){
for(int j=(n-1),y=0;j<(n+3);j++,y++){
if(myTries[x][y]==1){
tetris[i][j]=1;
}
}
}
for(int i=0;i<15;i++){
for(int j=0;j<10;j++){
if(j==9&&i!=14){
System.out.println(tetris[i][j]);
}else if(i!=14||j!=9){
System.out.print(tetris[i][j]+" ");
}else{
System.out.print(tetris[i][j]);
}
}
}
}
}

ccf201512-1数位之和


Main.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.example15121.hyf;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int n;
int sum=0;
int temp;
Scanner input = new Scanner(System.in);
n=input.nextInt();
while(n>0){
temp=n%10;
n=n/10;
sum+=temp;
}
System.out.println(sum);
}
}