博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MT2018笔试题之计算数字位数
阅读量:5905 次
发布时间:2019-06-19

本文共 1466 字,大约阅读时间需要 4 分钟。

一、计算数字位数

1、题目

给定一个数字T,计算从1到T的所有正整数的位数和。比如T=13,则12345678910111213有17位数字。

输入描述

3

13 4 5

输出

17 4 5

 

2、思路

详见代码部分

 

3、代码

import java.util.Scanner;/** * Created by Administrator on 2018/4/20. */public class Main1 {    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        while (sc.hasNext()) {            //输入数据组数            int T = sc.nextInt();            //输入数据            int[] arr = new int[T];            for (int i = 0; i < arr.length; i++) {                arr[i] = sc.nextInt();            }            //计算            int result ;            for (int i = 0; i < arr.length; i++) {                result = bitNum(arr[i]);                System.out.println(result);            }        }        sc.close();    }    public static int bitNum(int n) {        //计算n的位数        int num = n;        int count = 0;        while (n > 0) {            n = n / 10;            count++;        }        //如果为1位数        if (count == 1) {            return num;        }        //如果不是1位数,计算总的位数        int num1 = 0;  //总位数的一部分        for (int i = 0; i < count-1; i++) {            num1 += 9 * Math.pow(10, i) * (i + 1);        }        int temp1 = (int) (num % Math.pow(10,count-1));//去掉最高位剩下的数        int temp2 = (int) (num / Math.pow(10,count-1)); //数的最高位        int num2 = (int) ((temp1 + 1) * count + (temp2 - 1) * Math.pow(10,count-1) * count); //总位数的另一部分        return num1 + num2;    }}

-------------------------------------------

答案仅供参考

转载地址:http://gccpx.baihongyu.com/

你可能感兴趣的文章
更改UIView的背景
查看>>
APUE第15章学习扎记之程序的存储区布局试验
查看>>
ubuntu升级16.04 inter idea 中文输入法无效
查看>>
三目运算判断jsp脚本里面的值
查看>>
sshtunnel在本地访问云服务器mysql
查看>>
小蚂蚁学习APP接口开发(1)—— json方式封装通信接口
查看>>
我的友情链接
查看>>
CDN相关
查看>>
Tomcat的设置4——Tomcat的体系结构与设置基于端口号的虚拟主机
查看>>
我的友情链接
查看>>
ftp协议基础
查看>>
访问共享经常中断
查看>>
人生的交易
查看>>
MySql
查看>>
sql server 下载安装标记
查看>>
js运算符(运算符的结合性)
查看>>
idea 编译级别的设置
查看>>
内置对象Array的原型对象中添加方法
查看>>
6大设计原则
查看>>
Github简介
查看>>