您的位置:首页 > 编程语言

第五届在线编程大赛月赛第一题:完全平方

2014-10-28 23:23 393 查看
csdn上面一个赛事题目:具体要求代码中有

package com.junl.scott.fifthprogramming;

import java.util.ArrayList;
import java.util.List;

/*
*
* 题目:第五届在线编程大赛月赛第一题:完全平方
*
* 题意:给定整数区间[A,B]问其中有多少个完全平方数。 输入格式: 多组数据,包含两个正整数A,B 1<=A<=B<=2000000000。 输出格式: 每组数据输出一行包含一个整数,表示闭区间[A,B]中包含的完全平方数的个数。
*挑战规则: 输入样例 1 1 1 2 3 10 3 3 输出样例: 1 1 2 0
*/

public class OnePerfectSquare
{
/*
* 主方法
*/
public static void main(String[] args)
{
List<Integer> results = null;
results = OnePerfectSquare.getResults(OnePerfectSquare.initNumber());
for (Integer result : results)
System.out.println(result);
}

/*
* 初始化数字
*/
public static List<NumberGroup> initNumber()
{
List<NumberGroup> numberGroups = new ArrayList<NumberGroup>();
numberGroups.add(new NumberGroup(100, 200));
numberGroups.add(new NumberGroup(20, 40));
numberGroups.add(new NumberGroup(10, 1000));
numberGroups.add(new NumberGroup(300, 400));
numberGroups.add(new NumberGroup(30, 70));
return numberGroups;
}

/*
* 向返回结果中加值
*/
public static List<Integer> getResults(List<NumberGroup> numberGroups)
{
List<Integer> resultList = new ArrayList<Integer>();
// 循环调用
for (NumberGroup numberGroup : numberGroups)
{
resultList.add(OnePerfectSquare.getResult(numberGroup.getFirthNumber(), numberGroup.getSecondNumber()));
}
return resultList;
}

/*
* 根据两个数字获取取值范围的个数
*/
public static int getResult(int firthNumber, int secondNumber)
{
int result = 0;
int numberResult = 0;
// 循环读取
for (int i = (int) Math.sqrt(firthNumber); i < (firthNumber + secondNumber) / 2; i++)
{
numberResult = i * i;
if (firthNumber <= numberResult && numberResult <= secondNumber)
result++;
}
return result;
}
}

/*
* 定义数据组 两个变量
*/
class NumberGroup
{
private int firthNumber;
private int secondNumber;

// 给出一个构造函数,可以不用每次实例化出来
public NumberGroup(int firthNumber, int secondNumber)
{
this.firthNumber = firthNumber;
this.secondNumber = secondNumber;
}

public int getFirthNumber()
{
return firthNumber;
}

public void setFirthNumber(int firthNumber)
{
this.firthNumber = firthNumber;
}

public int getSecondNumber()
{
return secondNumber;
}

public void setSecondNumber(int secondNumber)
{
this.secondNumber = secondNumber;
}

}


在做完以后突然发现我SB了,我为什么要这样,完全可以求出两个数的平方根,根据这个范围来找就省去很多事,也没这么复杂,这么难理解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: