第一周笔记

题目一

“ 改革春风吹满地,

不会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

    x[i]=sc.nextInt();

    y[i]=sc.nextInt();

    }

    for(i=0;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

s[i]=sc.nextInt();

e[i]=sc.nextInt();

}

for(int i=0;i

for(int j=i;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

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

    A=sc.nextInt();

    B=sc.nextInt();

    int sum=0;

  for(int j=1;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

    s[i]=sc.nextInt();

  }

  for(int j=0;j


    System.out.println(fun(s[j]));


  }

  }


}

}

题目五

Problem Description

有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。

其中,蜂房的结构如下所示。



Input

输入数据的第一行是一个整数N,表示测试实例的个数,然后是N 行数据,每行包含两个整数a和b(0

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

    for(int j=0;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

    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

        if(c[i]-'1'!=0) {

          zero++;

        }

        }

        min=zero;

        for(int i=0;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));

}

}

}

你可能感兴趣的:(第一周笔记)