一.2020年能力挑战赛初赛
1-1题目
1-1 统计1到N的整数中,被A除余A-1的偶数的个数 输入说明:整数 N(N<10000), A, (A<N) 输出说明:符合条件的数的个数 输入样例:10 3 输出样例:2 (说明:样例中符合条件的2个数是 2、8)
1.1解题思路
- 先使用java.util.Scanner类进行接收输入N,A
- 1到N整数的偶数控制可使用for循环for(int i=2;i<N;i+2)
- 使用if(i%A==A-1)就将count++
- 代码如下:
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
int N=input.nextInt();
int A=input.nextInt();
int count=0;
for(int i=2;i<=N;i+=2){
if(i%A==A-1){
count++;
}
}
System.out.println(count);
}
}
1-2题目
1-2 统计1到N的整数中,除了1和自身之外,至少还能被两个数整除的数的个数 输入说明:整数 N(N<10000); 输出说明:符合条件的数的个数 输入样例:10 输出样例:3 (说明:样例中符合条件的3个数是6、8、10)
1.1解题思路
- 质数的定义:质数又叫素数,指的是大于1的自然数,除了1和本身外,不能被其他数整除的数叫质数。或者定义为:大于1的自然数,除了1和本身外不在用于其他因数。
import java.lang.Math;
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
int N=input.nextInt();
int count=0;
for(int i=2;i<=N;i++){
if(test(i)){
count++;
}
}
System.out.println(count);
}
public static boolean test(int n){
int N=(int)Math.sqrt(n);
boolean flag=false;
for(int i=2;i<=N;i++){
if(n%i==0&&n/i!=i){
flag=true;
}
}
return flag;
}
}
1-3
1-3 统计从1到N的整数中,所有立方值的平方根为整数的数的个数 输入说明:整数 N(N<10000); 输出说明:符合条件的数的个数,如43=64=82 输入样例:10 输出样例:3 (说明:样例中符合条件的3个数是1、4、9) 1e-6参考链接
1e-6 :
- 1e-6表示1乘以10的负6次方。
- Math.abs(x)<1e-6其实相当于x==0
- 1e-6(也就是0.000001)叫做epslon,用来抵消浮点运算中因为误差造成的相等无法判断的情况。它通常是一个非常小的数字(具体多小要看你的运算误差)
import java.util.Scanner;
import java.lang.Math;
public class Main{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int N = input.nextInt();
int ans = 0;
for(int i = 1;i <= N;i++){
double temp = Math.pow(i,3);
double temp1=Math.sqrt(temp);
if(Math.abs(temp1 - (int)temp1) < 1e-6){
ans++;
}
}
System.out.println(ans);
}
}
import java.util.Scanner;
import java.lang.Math;
public class Main{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int N = input.nextInt();
int ans = 0;
for(int i = 1;i <= N;i++){
double temp = Math.pow(i,3);
double temp1=Math.sqrt(temp);
if(temp1==(int)temp1){
ans++;
}
}
System.out.println(ans);
}
}
import java.util.Scanner;
import java.lang.Math;
import java.lang.Double;
public class Main{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int N = input.nextInt();
int ans = 0;
for(int i = 1;i <= N;i++){
double temp=Math.pow(i,3);
double temp1=Math.sqrt(temp);
String string=Double.toString(temp1);
int index=string.indexOf(".");
String substring=string.substring(index+1);
if(substring.equals("0")){
ans++;
}
}
System.out.println(ans);
}
}
import java.util.Scanner;
import java.lang.Math;
public class Main{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int N = input.nextInt();
int ans = 0;
for(int i = 1;i <= N;i++){
int temp = (int) Math.sqrt(i*i*i);
int Value = temp*temp ;
int realValue = i*i*i;
if(realValue==temp){
ans++;
}
}
System.out.println(ans);
}
}
|