杭电Oj2015-2018(Java版)

OJ2015

import java.util.Scanner;  
public class Main2015{  
  public static void main(String[] args) {  
      Scanner in = new Scanner(System.in);  
      while(in.hasNext()) {
         double n = in.nextInt();
         double m = in.nextInt();
         double end = 0;
         double sum = 0;
         double figure = 0;
         int num = 0;
         int number[] = new int[(int)n+1];
         if (n<=100) {
         for(int i = 1;i<=n;i++) 
         {
        number[i]=i*2;
         }
         for(int j = 1;j<=n;j++) {
        sum = number[j]+sum;
        figure++;
        if (j==n) 
        {
   end = sum/(n-num*m);
   System.out.println((int)end);
   break;
}
        if (figure%m==0)
        {
end = sum/m;
System.out.print((int)end+" ");
sum = 0;
end = 0;
num++;
}
         }
        }
      }
   }    
}
思考要点:
1.每m个数就要求m个数的平均数,所以利用figure记录下第n个偶数,当figure%m==0即每m个数时可求平均数。
2.剩下来的少于m个数的平均值怎么来表示:利用num记下平均数的个数,这样在最后求剩下的小于m个数的平均数的时候可以用n-num*m来求多出来的几个数的平均值。

OJ2016

import java.util.Scanner;  
public class Main2016{  
  public static void main(String[] args) {  
      Scanner in = new Scanner(System.in);  
      while(in.hasNext()) {
         int n = in.nextInt();
         int arr[] = new int[n+1];
         int min = 10000000;
         int chan = 0;
         int temp = 0;
         if (n==0) {
  break;
  }
         if (n<100) {
        for(int i = 1;i<=n;i++) {
            arr[i]=in.nextInt();
            if (arr[i]<min)
            {
   min=arr[i];
   chan = i;
            }
        if (i == n)
        {
  temp=arr[1];
  arr[1]=min;
  arr[chan]=temp; 
}
       
           for(int i = 1;i<=n-1;i++) {
          System.out.print(arr[i]+" ");
           }
               System.out.println(arr[n]);
         }
        
      }
   }    
}
注意:整型的范围为217483648~(-217483648)即2^31~(-2^31)

 OJ2017

import java.util.Scanner;  
public class Main2017{  
  public static void main(String[] args) {  
      Scanner in = new Scanner(System.in);  
      while(in.hasNext()) {
         int n = in.nextInt();
         String str[]= new String[n+1];
         int end = 0;
         for(int i = 1;i<=n;i++) {
        str[i]=in.next();
        char[]c = str[i].toCharArray();
             for(int j = 0;j<=c.length-1;j++) {
            if (c[j]>47&&c[j]<58) {
end++;
}
            if (j==c.length-1) {
System.out.println(end);
   end=0;
            }
             }
         }
      }
   }    
}
新知识点: char[]c = str[i].toCharArray();       //将str字符串中的每个字符存储在char[] c中。
                 String s2 = new String(c,1,2);  //从char[] c 中选取char[1]~char[2]构成新的字符串s2

 Oj2018

import java.util.Scanner;  
public class Main2018{  
  public static void main(String[] args) {  
      Scanner in = new Scanner(System.in);  
      while(in.hasNext()) {
        int n = in.nextInt();
        if (n==0) {
break;
}
        if (n>0&&n<=4) {
           System.out.println(n);
        }
        if (n>4&&n<55) {
         int big[] = new int[n+1];
         int small[] = new int[n+1]; 
         int end = 0;
         small[1]=0;
         small[2]=1;
         small[3]=2;
         small[4]=3;
         big[1]=1;
         big[2]=1;
         big[3]=1;
         big[4]=1;
         for(int i=5;i<=n;i++ ) {
        big[i]=big[i-3]+small[i-3];
        small[i]=small[i-1]+big[i]-big[i-3];
         }
        end = big[n]+small[n];
             System.out.println(end);
        }
      }
   }    
}
注意:这样计算的原因:前四年的牛的数量就是年数的数量(这是根据结果的规律)。而从第四天开始,每一天的大牛都是前三年之前的小牛与大牛之和(小牛每三年长成大牛),而小牛则是前一年的小牛加上这一年的大牛数量(因为大牛每年产小牛),再减去三年前的小牛数量(因为小牛已经长成了大牛)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值