8

#yyds干货盘点# 名企真题专题:怪数

 1 year ago
source link: https://blog.51cto.com/u_15488507/5969250
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

#yyds干货盘点# 名企真题专题:怪数

精选 原创

97的风 2022-12-26 15:59:54 博主文章分类:面试题 ©著作权

文章标签 Math System java 文章分类 Java 编程语言 阅读数188

1.简述:

描述

小M突然对怪数产生了兴趣。假设一个数n,如果[n/1]+[n/2]+...+[n/k](k为趋近于正无穷的正整数)为一个偶数,那么这个数是一个怪数,现在给定一个区间[a,b],求[a,b]之间有多少怪数。

[x]表示不大于x的最大整数。

输入描述:

输入只包含一行,有两个非负整数a,b(0<=a,b<=2^31,a<=b)。

输出描述:

输出区间[a,b]中的怪数的个数。

示例1

2.代码实现:

import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String a1 = sc.next();
String b1 = sc.next();
Long a = Long.parseLong(a1);
Long b = Long.parseLong(b1);
int num=0;
int start = 0;
while(Math.pow(start, 2)<a)
start++; //找到a是第几个数的平方
while(Math.pow(start,2)<=b){
if(start%2==0){
a=(long)Math.pow(start,2);//a就是start的平方这个怪数
start++;//接着找其他的
}else{
num+=Math.pow(start, 2)-a;
a=(long)Math.pow(start, 2);//记住a的位置,为了找不完整的怪数
start++;//接着往下找
}
}
//找完完整的后,加上不完整的,也就是最后一段
if(start%2!=0)
num+=b-a+1;
System.out.print(num);

}
}

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK