题目链接:
https://wenku.baidu.com/view/d8253e24f90f76c660371ac2.html?from=search
问题描述:
我们要求找出具有以下性质的数的个数(包含输入的自然数本身)
先输入一个自然数n (n<=1000), 然后对此自然数进行如下操作:
1.不作任何操作
2.在他左边加.上一个自然数,但该自然数不能超过原数最高位数字的一半
3.加上数之后,继续按此规则进行处理,直到不能再加自然数为止
输入:
第一行一个数t,表示有t组数据输入
之后每组数据占一行,每行一个自然数n
输出:
每组数据占一行,一个数,表示满足条件的数的个数
输入样本:
1
6
输出样本:
6
思路===================================================================
按照题目输入输出的思路,那6个数就是:
6
16
26=>126
36=>136
意思是不断求最高位数除以2及以下的自然数知道除以2等于0为止;
Queue<string> readLineData = new Queue<string> ();
Console.WriteLine("输入:");
readLineData.Enqueue("3");
Console.WriteLine("3");
readLineData.Enqueue("6");
Console.WriteLine("6");
readLineData.Enqueue("7");
Console.WriteLine("7");
readLineData.Enqueue("8");
Console.WriteLine("8");
int count = int.Parse(readLineData.Dequeue());
Console.WriteLine("输出:");
while (readLineData.Count != 0)
{
string n = readLineData.Dequeue();
int times = 1;// 输入数本身算一个
int maxNewNumber = int.Parse(n.ElementAt(0).ToString()) / 2;// 新添加的数
while (maxNewNumber > 0) // 不断讨论新加的数就行
{
times += maxNewNumber;
maxNewNumber /= 2;
}
times++;// 添加最后一次,maxNewNumber此时为1
Console.WriteLine(times);
}
Console.ReadKey();