题目一
“ 改革春风吹满地,
不会AC没关系;
实在不行回老家,
还有一亩三分地。
谢谢!(乐队奏乐)”
话说部分学生心态极好,每天就知道游戏,这次考试如此简单的题目,也是云里雾里,而且,还竟然来这么几句打油诗。
好呀,老师的责任就是帮你解决问题,既然想种田,那就分你一块。
这块田位于浙江省温州市苍南县灵溪镇林家铺子村,多边形形状的一块地,原本是linle 的,现在就准备送给你了。不过,任何事情都没有那么简单,你必须首先告诉我这块地到底有多少面积,如果回答正确才能真正得到这块地。
发愁了吧?就是要让你知道,种地也是需要AC知识的!以后还是好好练吧...
Input
输入数据包含多个测试实例,每个测试实例占一行,每行的开始是一个整数n(3<=n<=100),它表示多边形的边数(当然也是顶点数),然后是按照逆时针顺序给出的n个顶点的坐标(x1, y1, x2, y2... xn, yn),为了简化问题,这里的所有坐标都用整数表示。
输入数据中所有的整数都在32位整数范围内,n=0表示数据的结束,不做处理。
Output
对于每个测试实例,请输出对应的多边形面积,结果精确到小数点后一位小数。
每个实例的输出占一行。
Sample Input
3 0 0 1 0 0 1
4 1 0 0 1 -1 0 0 -1
0
Sample Output
0.5
2.0
代码:package acm题目;
import java.util.Scanner;
public class acm3036 {
static int szx(int x1,int y1,int x2,int y2) {
return x1*y2-x2*y1;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int x[]=new int[100];
int y[]=new int[100];
while(sc.hasNext()) {
int i;
int n=sc.nextInt();
if(n==0) return;
double sum=0.0;
for(i=0;i<n;i++) {
x[i]=sc.nextInt();
y[i]=sc.nextInt();
}
for(i=0;i<n-1;i++) {
sum+=szx(x[i],y[i],x[i+1],y[i+1]);
}
sum+=x[i]*y[0]-x[0]*y[i];
System.out.println(sum/2);
}
}
}
题目二
Problem Description
“今年暑假不AC?”
“是的。”
“那你干什么呢?”
“看世界杯呀,笨蛋!”
“@#$%^&*%...”
确实如此,世界杯来了,球迷的节日也来了,估计很多ACMer也会抛开电脑,奔向电视了。
作为球迷,一定想看尽量多的完整的比赛,当然,作为新时代的好青年,你一定还会看一些其它的节目,比如新闻联播(永远不要忘记关心国家大事)、非常6+7、超级女生,以及王小丫的《开心辞典》等等,假设你已经知道了所有你喜欢看的电视节目的转播时间表,你会合理安排吗?(目标是能看尽量多的完整节目)
Input
输入数据包含多个测试实例,每个测试实例的第一行只有一个整数n(n<=100),表示你喜欢看的节目的总数,然后是n行数据,每行包括两个数据Ti_s,Ti_e (1<=i<=n),分别表示第i个节目的开始和结束时间,为了简化问题,每个时间都用一个正整数表示。n=0表示输入结束,不做处理。
Output
对于每个测试实例,输出能完整看到的电视节目的个数,每个测试实例的输出占一行。
Sample Input
12
1 3
3 4
0 7
3 8
15 19
15 20
10 15
8 18
6 12
5 10
4 14
2 9
0
Sample Output
5
代码:package acm题目;
import java.io.BufferedInputStream;
import java.util.Scanner;
public class acm2037 {
public static void main(String[] args) {
Scanner sc=new Scanner(new BufferedInputStream(System.in));
while(sc.hasNext()) {
int n=sc.nextInt();
if(n==0) return;
int []s=new int[n];
int []e=new int[n];
int count=1;
for(int i=0;i<n;i++) {
s[i]=sc.nextInt();
e[i]=sc.nextInt();
}
for(int i=0;i<n;++i) {
for(int j=i;j<n;++j) {
if(e[i]>e[j]) {
int temp=e[i];
e[i]=e[j];
e[j]=temp;
temp=s[i];
s[i]=s[j];
s[j]=temp;
}
}
}
int b=e[0];
for(int i=0;i<n;i++) {
if(s[i]>=b) {
count++;
b=e[i];
}
}
System.out.println(count);
}
}
}
题目三:
亲和数
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 66560 Accepted Submission(s): 40313
Problem Description
古希腊数学家毕达哥拉斯在自然数研究中发现,220的所有真约数(即不是自身的约数)之和为:
1+2+4+5+10+11+20+22+44+55+110=284。
而284的所有真约数为1、2、4、71、 142,加起来恰好为220。人们对这样的数感到很惊奇,并称之为亲和数。一般地讲,如果两个数中任何一个数都是另一个数的真约数之和,则这两个数就是亲和数。
你的任务就编写一个程序,判断给定的两个数是否是亲和数
Input
输入数据第一行包含一个数M,接下有M行,每行一个实例,包含两个整数A,B; 其中 0 <= A,B <= 600000 ;
Output
对于每个测试实例,如果A和B是亲和数的话输出YES,否则输出NO。
Sample Input
2
220 284
100 200
Sample Output
YES
NO
代码:package acm题目;
import java.util.Scanner;
public class acm2040 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()) {
int M=sc.nextInt();
int A,B;
for(int i=0;i<M;i++) {
A=sc.nextInt();
B=sc.nextInt();
int sum=0;
for(int j=1;j<A;j++) {
if(A%j==0) {
sum+=j;
}
}
if(sum==B)System.out.println("YES");
else System.out.println("NO");
}
}
}
}
题目四
Problem Description
有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?
Input
输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M(1<=M<=40),表示楼梯的级数。
Output
对于每个测试实例,请输出不同走法的数量
Sample Input
2
2
3
Sample Output
1
2
代码:
package acm题目;
import java.util.Scanner;
public class acm2041 {
static int fun(int n) {
if(n==2||n==3)
return (n-1);
return fun(n-1)+fun(n-2);
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()) {
int N=sc.nextInt();
int s[]=new int[N];
for(int i=0;i<N;i++) {
s[i]=sc.nextInt();
}
for(int j=0;j<N;j++) {
System.out.println(fun(s[j]));
}
}
}
}
题目五
Problem Description
有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。
其中,蜂房的结构如下所示。
Input
输入数据的第一行是一个整数N,表示测试实例的个数,然后是N 行数据,每行包含两个整数a和b(0<a<b<50)。
Output
对于每个测试实例,请输出蜜蜂从蜂房a爬到蜂房b的可能路线数,每个实例的输出占一行。
Sample Input
2
1 2
3 6
Sample Output
1
3
代码:package acm题目;
import java.util.Scanner;
public class acm2044 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()) {
int N=sc.nextInt();
long s[]=new long[50];
s[0]=s[1]=1;
while(N--!=0){
int a=sc.nextInt();
int b=sc.nextInt();
int n=(b-a);
for(int k=2;k<50;k++) {
s[k]=(s[k-2]+s[k-1]);
}
System.out.println(s[n]);
}
}
}
}
题目六
Problem Description
Give you the width and height of the rectangle,darw it.
Input
Input contains a number of test cases.For each case ,there are two numbers n and m (0 < n,m < 75)indicate the width and height of the rectangle.Iuput ends of EOF.
Output
For each case,you should draw a rectangle with the width and height giving in the input.
after each case, you should a blank line.
Sample Input
3 2
Sample Output
+---+
| |
| |
+---+
代码:
package acm题目;
import java.util.Scanner;
public class acm2052 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()) {
int m=sc.nextInt();
int n=sc.nextInt();
for(int i=0;i<n+2;i++) {
for(int j=0;j<m+2;j++) {
if(i==0&&j==0||j==0&&i==(n+1)||i==0&&j==(m+1)||i==(n+1)&&j==(m+1)) {
System.out.print("+");
}
else if((i==0&&j!=0&&j!=m+1)||(i==n+1&&j!=0&&j!=m+1)) {
System.out.print("-");
}
else if(i!=0&&i!=n+1&&j==0||i!=0&&i!=n+1&&j==m+1) {
System.out.print("|");
}
else System.out.print(" ");
}
System.out.println();
}
System.out.println();
}
}
}
题目七
Problem Description
Give you a number on base ten,you should output it on base two.(0 < n < 1000)
Input
For each case there is a postive number n on base ten, end of file.
Output
For each case output a number on base two.
Sample Input
1
2
3
Sample Output
1
10
11
代码:package acm题目;
import java.util.Scanner;
public class acm2051 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()) {
int s=sc.nextInt();
int s1=s;
int []a=new int[1000];
int count=0;
while(s!=0) {
count++;
s=s/2;
}
for(int i=0;i<count;i++) {
a[i]=s1%2;
s1=s1/2;
}
for(int i=count-1;i>=0;i--) {
System.out.print(a[i]);
}
System.out.println("");
}
}
}
打卡题目
题目描述:翻转字符串并实现单调递增,只含有0 1两个数字
代码:
package acm题目;
import java.util.Scanner;
public class acm课程作业 {
public static int min(String S) {
char c[]=S.toCharArray();
int min=99999;int zero=0;
for(int i=0;i<c.length;i++) {
if(c[i]-'1'!=0) {
zero++;
}
}
min=zero;
for(int i=0;i<c.length;i++) {
if(c[i]=='0') {
zero--;
min=Math.min(zero, min);
}else {
zero++;
}
}
return min;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()) {
String a=sc.nextLine();
System.out.println(min(a));
}
}
}