ZZULIOJ JAVA T1040-T1049

本文提供了一系列Java编程挑战,涉及数学序列求和、数组排序与统计、奇数乘积计算、对数计算、阶乘计算、平方与立方求和等,旨在提升编程技能。

ZZULIOJ JAVA T1040-T1049

T1040

import java.util.Scanner;

public class T1040 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int x = in.nextInt();
		in.close();
		double sum =0.0;
		int t =1;
		for(int i=1; i<=x;i++) {
			
			sum += 1.0/t;
			t  +=2;
		}
		System.out.printf("%.2f", sum);

	}

}

T1041

import java.util.Scanner;

public class T1041 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int x = in.nextInt();
		in.close();
		double sum =0.0;
		int t =1;
		int f =1;
		for(int i=1; i<=x;i++) {
			
			sum += 1.0*f/t;
			f = -f;
			t  +=2;
		}
		System.out.printf("%.2f", sum);

	}

}

T1042

import java.util.Scanner;

public class T1042 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int x = in.nextInt();
		in.close();
		double sum =0.0;
		double d = 1;
		double t =1;
		double f =1;
		for(int i=1; i<=x;i++) {
			
			sum += d*f/t;
			d++;
			f = -f;
			t  +=2;
		}
		System.out.printf("%.3f", sum);


	}

}

T1043

import java.util.Scanner;

public class T1043 {


	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int x = in.nextInt();
		int a[] = new int[x];
		
		for(int i =0;i<x;i++)
			a[i] = in.nextInt();
		for(int i=1;i<x;i++)
			for(int j =0;j<x-i;j++) {
				if(a[j]<a[j+1]) {
					int t = a[j+1];
				    a[j+1] =a[j];
				    a[j] =t;
				}
			    
					
			}
		in.close();
		System.out.println(a[0]);

	}

}

T1044

import java.util.Scanner;

public class T1044 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int x = in.nextInt();
		int a[] = new int[x];
		for(int i =0;i<x;i++)
			a[i] = in.nextInt();
		in.close();
		int t=0;
		for(int i=0;i<a.length;i++) {
			if(a[i]<60)
				t++;
		}
		System.out.printf("%.2f", t*1.0/x);
			

	}

}

T1045

import java.util.Scanner;

public class T1045 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int x = in.nextInt();
		int n[]  =new int[x];
		int a=0 , b=0 ,c=0;
		for(int i=0; i<n.length;i++) {
			n[i] = in.nextInt();
			
			if(n[i]<0)
				a++;
			else if(n[i]==0)
				b++;
			else 
				c++;
				
		}
		in.close();
		System.out.println(a+" "+b+" "+c);

	}

}

T1046

import java.util.Scanner;

public class T1046 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int x = in.nextInt();
		int n[]  =new int[x];
		int a =1;
		for(int i=0; i<n.length;i++) {
			n[i] = in.nextInt();
			
			if(n[i]%2==1)
				a*=n[i];
		}
		in.close();
		System.out.println(a);

	}

}

T1047

import java.util.Scanner;

public class T1047 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int x = in.nextInt();
		int y = in.nextInt();
		in.close();
		for(int i = x;i<=y;i++) {
			System.out.printf("%4d%8.4f\n",i,Math.log(i) );
		}

	}

}

T1048

import java.util.Scanner;

public class T1048 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int x = in.nextInt();
		long  t =1;
	
		in.close();
		for(int i = 1;i<=x;i++) {
			t = t*i;
			System.out.printf("%-4d%-20d\n",i,t );
		}

	}

}

T1049

import java.util.Scanner;

public class T1049 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int x = in.nextInt();
		int y = in.nextInt();	
		int b=0,c=0;
		for(int i = x;i<=y;i++) {
			
			if(i%2==0)
				b+=Math.pow(i, 2);
			else
				c+=Math.pow(i, 3);
		}
		in.close();
		System.out.println(b+" "+c);

	}

}

这是一道经典的位运算题目,考察对二进制的理解和位运算的熟练程度。 题目描述: 给定一个长度为 $n$ 的数组 $a$,初始时每个数的值都为 $0$。现在有 $m$ 个操作,每个操作为一次询问或修改。 对于询问,给出两个整数 $l,r$,求 $a_l \oplus a_{l+1} \oplus \cdots \oplus a_r$ 的值。 对于修改,给出一个整数 $x$,表示将 $a_x$ 的值加 $1$。 输入格式: 第一行两个整数 $n,m$。 接下来 $m$ 行,每行描述一次操作,格式如下: 1 l r:表示询问区间 $[l,r]$ 的异或和。 2 x:表示将 $a_x$ 的值加 $1$。 输出格式: 对于每个询问操作,输出一个整数表示答案,每个答案占一行。 数据范围: $1 \leq n,m \leq 10^5$,$0 \leq a_i \leq 2^{30}$,$1 \leq l \leq r \leq n$,$1 \leq x \leq n$ 输入样例: 5 5 2 1 2 3 1 2 4 2 2 1 1 5 输出样例: 0 2 解题思路: 对于询问操作,可以利用异或的性质,即 $a \oplus b \oplus a = b$,将 $a_l \oplus a_{l+1} \oplus \cdots \oplus a_r$ 转化为 $(a_1 \oplus \cdots \oplus a_{l-1}) \oplus (a_1 \oplus \cdots \oplus a_r)$,因为两个前缀异或后的结果可以相互抵消,最后的结果即为 $a_1 \oplus \cdots \oplus a_{l-1} \oplus a_1 \oplus \cdots \oplus a_r = a_l \oplus \cdots \oplus a_r$。 对于修改操作,可以将 $a_x$ 对应的二进制数的每一位都分离出来,然后对应位置进行修改即可。由于只有加 $1$ 操作,所以只需将最后一位加 $1$ 即可,其余位不变。 参考代码:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值