永发信息网

在从1到n的正数中1出现的次数 JAVA

答案:4  悬赏:10  手机版
解决时间 2021-04-28 06:36
在从1到n的正数中1出现的次数 JAVA
最佳答案
// 计算1-n中1出现的次数
public class CountOne {
// 思路:分别计算“1”在每个位上面出现的次数,叠加起来
public static int countNumOf1(int n) {
if (n <= 0) {
return 0;
}
int count = 0;
int factor = 1;
while(n / factor != 0) {
int lowerNum = n - n / factor * factor;
int currentNum = (n / factor) % 10;
int highNum = n / (factor * 10);

if (currentNum == 0) {
// 如果为0,出现1的次数由高位决定
count += highNum * factor;
} else if (currentNum == 1) {
// 如果为1,出现1的次数由高位和低位决定
count += highNum * factor + lowerNum + 1;
} else {
// 如果大于1,出现1的次数由高位决定
count += (highNum + 1) * factor;
}
factor *= 10;
}
return count;
}

public static void main(String[] args) {
// 测试
System.out.println(countNumOf1(13));
System.out.println(countNumOf1(23));
System.out.println(countNumOf1(33));
System.out.println(countNumOf1(93));
System.out.println(countNumOf1(123));

}

}
全部回答
123123用一个for循环,从n开始,for(n=*;n>0;n--),然后用函数ltoa,将其变成字符串,再用一循环依次看是不是1,是就用变量k++,就行了。
这题好像不会这么出,应该给出十几位数! 这样就可以了
1+1
用一个for循环,从n开始,for(n=*;n>0;n--),然后用函数ltoa,将其变成字符串,再用一循环依次看是不是1,是就用变量k++,就行了。
这题好像不会这么出,应该给出十几位数!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
手机的话筒坏了,修下大概要多少钱?
诺基亚5530QQ2009电脑上哪有下的?谢谢
DNF召唤师如何加技能比较好啊?
实习,你准备好了吗?
一对恋人来到一个山谷,这个谷四周都没有水,
早安问候诗词
ipad汉化软件
华夏在哪些地方能用亲密度呼唤伴侣?
中学生对异性有好感算初恋吗?
电脑关机显示内存不能为real求电脑高手帮忙
什么是上行下行,网络上行和下行是什么意思
腾讯那些游戏可以点亮游戏人生。(要什么条件
你好辽宁省东方医院怎么说修补处女膜两分钟完
梦幻多少级剧情有菜果啊
康佳L60手机java怎么使用啊
推荐资讯
妈妈给女儿生日祝福语,给女儿生日祝福语大全
我怎么进不了自己的空间?
我是1990年11月23日,射手座的幸运数字是多少
什么手机上网最好用?
中国信合(香山分社)在什么地方啊,我要过去处
八年级学生评语大全,如何评价学生的优缺点
马家浴室我想知道这个在什么地方
宁檬直接吃好还是泡在水里喝水好呢?
HELP ME ABOUT 手机证书 。。。。
谁能介绍下Jolin的新专辑?
『死亡之塔』, 从随机出现的影丸那里得到[给
美容用的橄榄油,什么牌子的好
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?