csharp基础练习题:简单有趣#34:数字分组【难度:1级】:
任务
现在给你你想要几个组之间分配整数数组.第一组应包含从1到10的数字 4 中,第二应包含那些从10 4 + 1至2×10 4 ,. …,100 个一个应当从99×10包含数字 4 + 1~10 6 等.
所有数字将整组以这样的方式在文本文件中写下:
组走了一个又一个;
每个非空组具有占用一个线的头部;
一组中的每个数占一行.
计算得到的文本文件将有多少行有.
示例
对于一个= [20000,239,10001,999999,10000,20566,29999]
,
输出应该是11
.
这些数字可以分为4组:
239和10000转到第一组(1 … 10 4 );
10001 20000转到第二个第二(10 4 + 1 … 2×10 4 );
20566和29999转到第三组(2×10 4 + 1 … 3×10 4 );
基团的4至99是空的;
999999前进到100 个组(99 * 10 4 + 1 … 10 6 ).
因此,将有4组(即,四个头)和7号,
因此文件将占据4 + 7 = 11行.
该文件是这样的:
1-10000:
239
10000
10001-20000:
10001
20000
20001-30000:
20566
29999
990001-1000000:
999999
输入输出
- [输入]
整数数组A
约束:1个≤则为a.length≤10 4 ,1≤A [1]≤10 6 .
- [输出]
的整数
所需行数来存储分组编号.
编程目标:
namespace myjinxin
{
using System;
public class Kata
{
public int NumbersGrouping(int[] a){
//coding and coding..
}
}
}
测试样例:
namespace myjinxin
{
using NUnit.Framework;
using System;
[TestFixture]
public class myjinxin
{
var kata=new Kata();
Assert.AreEqual(11, kata.NumbersGrouping(new int[]{20000, 239, 10001, 999999, 10000, 20566, 29999}));
Assert.AreEqual(23, kata.NumbersGrouping(new int[]{10000, 20000, 30000, 40000, 50000, 60000, 10000, 120000, 150000, 200000, 300000, 1000000}));
Assert.AreEqual(2, kata.NumbersGrouping(new int[]{10000}));
最佳答案(多种解法):
更多关联题目:
csharp基础练习题:完成该模式#2【难度:1级】–景越C# 经典编程题库,不同难度C# 练习题,适合自学C# 的新手进阶训练
csharp基础练习题:[里德尔由代码]两个探子【难度:1级】–景越C# 经典编程题库,不同难度C# 练习题,适合自学C# 的新手进阶训练
csharp基础练习题:计算总膳食【难度:1级】–景越C# 经典编程题库,不同难度C# 练习题,适合自学C# 的新手进阶训练
免责申明
本博客所有编程题目及答案均收集自互联网,主要用于供网友学习参考,如有侵犯你的权益请联系管理员及时删除,谢谢
题目收集至https://www.codewars.com/
https://www.codewars.com/kata/simple-fun-number-34-numbers-grouping