要看什么系统了。你可以试下Console.ReadLine()或者尝试接收Args看看行不行。另外csdn的oj系统一直有问题,也不知道修复了没有现在。
解决方案 »
- 怎么检查数据库里是不存在某个数值
- C# PictureBox如何真正透明分不多参与的都给分
- Devexpress 提供的web打印功能很强大,但是没有设计器?
- dataGridView1_CurrentCellChanged事件出错
- form上有一个picturebox控件,picturebox.image为一透明的png图片,我将winform设为透明,运行png图片显得模糊了,有锯齿。这问题怎么解决
- 在一个窗体中调用另一个窗体的问题
- 如何制作英文版的安装程序?(在中文版的.net下面)
- 问一个百思不得其解的小问题
- C#的两种数据类型转换有有区别?
- 我想在ASP.NET中使用其它网站的一个图像,在我的网站里生成一个缩减图,该如何做?
- 遇到一个winfrom+webbrowser的难题,百度无果,请大神指点一下!!
- MVC对下拉框赋值 ??
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace 完全平方数
{
class Program
{
static void Main(string[] args)
{
do
{
//依次输入1,1,1,2,3,10,3,3
Console.WriteLine("请把数据以英文半角逗号分隔");
string[] str = Console.ReadLine().ToString().Replace(",",",").Split(','); int[] output = Array.ConvertAll<string, int>(str, delegate(string s) { return int.Parse(s); }); Concsoles(output); } while (Console.ReadLine().ToString()!="y");
Console.ReadLine();
}
private static void Concsoles(int[] inputNum)
{
int maxNum = 0;
int minNum = 0;
CompleteSquareNumber csn = new CompleteSquareNumber(2000000000);
// 只计算能成对的数据
for (int i = 0; i < inputNum.Length / 2; i++)
{
minNum = inputNum[2 * i];
maxNum = inputNum[2 * i + 1];
if (maxNum < minNum) // 数据错误,跳过本组
{
continue;
}
Console.WriteLine(csn.GetCSNCount(minNum, maxNum).ToString());
}
}
// 获取指定范围内的完全平方数
private int[] GetValue(int minValue, int maxValue)
{
List<int> numList = new List<int>();
return numList.ToArray();
}
}
sealed class CompleteSquareNumber
{
int[] allNums = null; // 保存所有的完全数 public CompleteSquareNumber(int maxNum)
{
CreateAllCompleteSquareNumber(maxNum);
} // 生成所有指定范围内内的完全平方数
private void CreateAllCompleteSquareNumber(int maxNum)
{
List<int> AllCSNList = new List<int>();
AllCSNList.Clear(); int iCurr = 0;
int n = 1;
while (true)
{
iCurr = n * n;
if (iCurr < maxNum)
{
AllCSNList.Add((int)iCurr);
}
else
{
break;
}
n++;
}
allNums = AllCSNList.ToArray();
} // 获取指定范围内的完全平方数
public int GetCSNCount(int minValue, int maxValue)
{
int minIndex = 0;
int maxIndex = 0; int iLen = allNums.Length;
for (int i = 0; i < iLen; i++)
{
if (allNums[i] >= minValue)
{
minIndex = i;
break;
}
}
for (int i = minIndex; i < iLen; i++)
{
if (allNums[i] > maxValue)
{
maxIndex = i;
break;
}
} return maxIndex - minIndex;
} }
}依次输入1,1,1,2,3,10,3,3
输出
1
1
2
0
但是存在一个问题,不是按照这个1,1,1,2,3,10,3,3
格式输入,你自己在修改一下吧。
* 第五届在线编程大赛月赛第一题:完全平方(CSDN)
* 给定整数区间[A,B]问其中有多少个完全平方数。 输入格式: 多组数据,包含两个正整数A,B 1<=A<=B<=2000000000。 输出格式: 每组数据输出一行包含一个整数,表示闭区间[A,B]中包含的完全平方数的个数。
* 挑战规则:
* 输入样例 1 1 1 2 3 10 3 3 输出样例: 1 1 2 0
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace 完全平方数
{
class Program
{
static void Main(string[] args)
{
while (true)
{
Console.WriteLine("请输入:");
string s = Console.ReadLine();
if(s.Contains("y"))
{
return;
}
args = s.Split(new char[] { ' ' });
int[] inputNum = new int[args.Length];
for (int i = 0; i < args.Length; i++)
{
inputNum[i] = int.Parse(args[i]);
} int maxNum = 0;
int minNum = 0;
CompleteSquareNumber csn = new CompleteSquareNumber(2000000000); // 只计算能成对的数据
for (int i = 0; i < inputNum.Length / 2; i++)
{
minNum = inputNum[2 * i];
maxNum = inputNum[2 * i + 1];
if (maxNum < minNum) // 数据错误,跳过本组
{
continue;
}
Console.WriteLine(csn.GetCSNCount(minNum, maxNum).ToString());
}
}
}
// 获取指定范围内的完全平方数
private int[] GetValue(int minValue, int maxValue)
{
List<int> numList = new List<int>();
return numList.ToArray();
}
}
sealed class CompleteSquareNumber
{
int[] allNums = null; // 保存所有的完全数 public CompleteSquareNumber(int maxNum)
{
CreateAllCompleteSquareNumber(maxNum);
} // 生成所有指定范围内内的完全平方数
private void CreateAllCompleteSquareNumber(int maxNum)
{
List<int> AllCSNList = new List<int>(); int iCurr = 0;
int n = 1;
while (true)
{
iCurr = n * n;
if (iCurr < maxNum)
{
AllCSNList.Add((int)iCurr);
}
else
{
break;
}
n++;
}
allNums = AllCSNList.ToArray();
} // 获取指定范围内的完全平方数
public int GetCSNCount(int minValue, int maxValue)
{
int minIndex = 0;
int maxIndex = 0; int iLen = allNums.Length;
for (int i = 0; i < iLen; i++)
{
if (allNums[i] >= minValue)
{
minIndex = i;
break;
}
}
for (int i = minIndex; i < iLen; i++)
{
if (allNums[i] > maxValue)
{
maxIndex = i;
break;
}
} return maxIndex - minIndex;
} }
}
=====================================
这样也不行
不说效率问题,定义应该用long,int不够的。
差不多10多行代码就可以完成任务了。
import java.util.Scanner;public class PerfectSquare {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
final int N = 5; //数据的组数
int[][] num = new int[N][2];
for(int i = 0; i < N; i++) {
for(int j = 0; j < 2; j++) {
num[i][j] = input.nextInt();
}
}
for(int i = 0; i < N; i++) {
int sqrtA = (int) Math.sqrt(num[i][0]);//1到最小值区间包含的完全平方数的个数
int sqrtB = (int) Math.sqrt(num[i][1]);//1到最大值区间包含的完全平方数的个数
int count = sqrtB - sqrtA; //相减得到最小值和最大值区间包含的完全平方数的个数
if (Math.pow(sqrtA, 2) == num[i][0]) count++; // 如果最小值本身是一个完全平方数,个数加一。
System.out.println(count);
}
}
}不知道哪里出错了,求解答。
#include<math.h>
int main()
{
int a,b,sq_a,sq_b;
while(scanf("%d %d",&a,&b))
{
sq_a = (int) sqrt(a);
sq_b = (int) sqrt(b);
printf("%d\n",sq_a*sq_a == a?sq_b-sq_a+1:sq_b-sq_a);
}
return 0;
}用时2分钟写完.... 通过