C#试玩程序设计试题——自然数的计算

题目链接:
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();

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值