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;
}
}