第五届在线编程大赛月赛第一题:完全平方
2014-10-28 23:23
393 查看
csdn上面一个赛事题目:具体要求代码中有
在做完以后突然发现我SB了,我为什么要这样,完全可以求出两个数的平方根,根据这个范围来找就省去很多事,也没这么复杂,这么难理解。
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了,我为什么要这样,完全可以求出两个数的平方根,根据这个范围来找就省去很多事,也没这么复杂,这么难理解。
相关文章推荐
- 第五届在线编程大赛月赛第一题:完全平方数的个数
- 第五届在线编程大赛月赛第一题:完全平方数的个数
- 第五届在线编程大赛月赛第一题:完全平方数的个数
- 第五届在线编程大赛月赛第一题:完全平方数的个数
- csdn第五届在线编程大赛-完全平方
- 第五届在线编程大赛月赛第一题:完全平方数的个数
- NYOJ--1126--csdn第五届在线编程大赛-完全平方
- 第五届在线编程大赛月赛第一题:完全平方数的个数
- 第五届在线编程大赛月赛指定题目:反向互补子串
- 第五届在线编程大赛月赛指定题目:反向互补子串
- 第五届在线编程大赛月赛指定题目:反向互补子串。测试版
- 第五届在线编程大赛月赛第三题:石子游戏(1)
- 微软Azure•英雄会第五届在线编程大赛月赛第四题:Core allocation
- 【题解】 英雄会-第五届在线编程大赛月赛第二题:走格子
- csdn英雄会题解之第五届在线编程大赛月赛指定题目:反向互补子串
- CSDN英雄会——第五届在线编程大赛月赛指定题目:反向互补子串
- CSDN英雄会-第五届在线编程大赛月赛第三题:石子游戏(1)
- csdn第五届在线编程大赛-全然平方
- csdn英雄会题解之第五届在线编程大赛月赛第三题:石子游戏 --多堆博弈游戏 多堆拈游戏
- 微软必应·英雄会第三届在线编程大赛 “几个bing” 题解