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++;
}
}
}
}
}
}
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]);
}
}
}
}
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;
}
}
}
}
}
}
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);
}
}
}
}
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);
}
}
}
}
注意:这样计算的原因:前四年的牛的数量就是年数的数量(这是根据结果的规律)。而从第四天开始,每一天的大牛都是前三年之前的小牛与大牛之和(小牛每三年长成大牛),而小牛则是前一年的小牛加上这一年的大牛数量(因为大牛每年产小牛),再减去三年前的小牛数量(因为小牛已经长成了大牛)。