- 浏览: 1434206 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
luhouxiang:
写的很不错,学习了
Extjs 模块化动态加载js实践 -
kingkongtown:
如果想改成淘宝后台那样,可以在编辑器批量上传图片呢?
kissy editor 阶段体会 -
317966578:
兄弟我最近也在整jquery和caja 开放一些接口。在git ...
caja 原理 : 前端 -
liuweihug:
Javascript引擎单线程机制及setTimeout执行原 ...
setTimeout ,xhr,event 线程问题 -
辽主临轩:
怎么能让浏览器不进入 文档模式的quirks模式,进入标准的
浏览器模式与文本模式
不知道是不是 没事闲的,想出来一道题:
0 到 n 的数字中,有几个数字,包含某个个位数,如
0到11有 2个数包含 1 ------- 1, 11
1个数包含 4 ------- 4
2 个数包含 0 ------- 0,10
结果停不下来了,花了一晚上搞了个程序,我脑袋笨还是咋的,可累死了,不知道程序高不高效,总比一个个个数好,但 0统计没能整合在一起,怎么做啊,其他倒都可以了
public class NumberCount { public static void easy(int s, int n, int d) { System.out.println("-----------------------"); int count = 0; for (int i = s; i <= n; i++) { if ((i + "").indexOf(d + "") != -1) { count++; //System.out.println(i); } } System.out.println(count); System.out.println("-----------------------"); } public static void main2(String[] args) { Time t = new Time(); t.start(); System.out.println(coutD(98798, 0)); System.out.println("duration :" + t.stop()); t.start(); easy(0, 98798, 0); System.out.println("duration :" + t.stop()); } //0-n 有几个数字 包含 0 public static int coutD(int n, int d) { String nstr = n + ""; int l = nstr.length(); if (d == 0) { throw new RuntimeException("error :d !=0 "); } int[] ar = generateN(l, d); int result = 0; for (int i = 0; i < l; i++) { String c = nstr.charAt(i) + ""; int cnum = Integer.parseInt(c); if (cnum < d) { } else if (cnum == d) { result += ar[l - i]; //直接把后面的算出来 if (i != l - 1) result += Integer.parseInt(nstr.substring(i + 1)); break; } else { result += ar[l - i] + (cnum - d - 1) * ((ar[l - i] - 1) / d) + Math.pow(10, l - i - 1) - 1; } } return result; } //d 内 有几个 数 包含 d //d0 内 有几个 数 包含 d //d00 内 有几个 数 包含 d //d000 内 有几个 数 包含 d public static int[] generateN(int n, int d) { int[] narray = new int[n + 1]; narray[1] = 1; for (int i = 2; i <= n; i++) { //ex: //1000 {0-100 101-199 200-999 1000} //2000 {0-200 201-299 300-999 1000} // (narray[i - 1] + (int) Math.pow(10, i - 2) - 1 + (9 - d) * ((narray[i - 1] - 1) / d)); //(narray[i - 1] - 1) / d) 每100 个 含的个数 narray[i] = (narray[i - 1] + (int) Math.pow(10, i - 2) - 1 + (9 - d) * ((narray[i - 1] - 1) / d)) * d + 1; // System.out.println("narray[" + i + "]=" + narray[i]); } return narray; } //1 内 有几个 数 包含 d //10 内 有几个 数 包含 d //100 内 有几个 数 包含 d public static int[] generateN2(int n, int d) { int[] narray = new int[n + 2]; narray[1] = d > 1 ? 0 : 1; narray[2] = d <= 1 ? 2 : 1; int base = 0; for (int i = 3; i <= n; i++) { base = narray[i - 1]; //100,100,0-100 101-200 不一样 if (d <= 1) base--; //0 特殊 //假设 10000 if (d != 0) //d=6 //0-1000 6001-6999 区别考虑 ,6001-6999 都带 6,下面 乘的是 9 ,下面就不考虑 6001-6999 narray[i] = (int) Math.pow(10, i - 2) - 1; else //0-1000 6001-7000 区别 //00XX,10XX,20XX,....90XX 特殊于 0-1000 10 个 Math.pow(10, i - 3) // 但 0000,1000,2000,考虑过了、,减10 //写出来 我都有点不懂 。。。。 // narray[i] = ((int) Math.pow(10, i - 3) - 1)*10; narray[i] = (int) Math.pow(10, i - 2) - 10; narray[i] += 9 * base + 1; //0,1 边界特殊 100,1000,。。。 if (d <= 1) narray[i]++; } return narray; } //0-n 有几个数字 包含 0 public static int coutD2(int n, int d) { int base = 0; String nstr = n + ""; int l = nstr.length(); if (l == 1) { if (n >= d) return 1; return 0; } int[] ar = generateN2(l, d); int result = 0; for (int i = 0; i < l; i++) { String c = nstr.charAt(i) + ""; int cnum = Integer.parseInt(c); if (cnum < d) { result += ar[l - i] * cnum; } else if (cnum == d) { result += d * ar[l - i]; //直接把后面的算出来 if (i != l - 1) result += Integer.parseInt(nstr.substring(i + 1)); //0,1 特殊 if (d > 1) result += 1; break; } else { base = ar[l - i]; //0,1特殊 if (d <= 1) base--; result += (cnum - 1) * base; //0 特殊 if (d != 0) result += Math.pow(10, l - i - 1); else result += ar[l - i] ; } } return result; } public static void main(String[] args) { /*int[] a1 = generateN(9, 1); System.out.println(Arrays.toString(a1));*/ /* int[] a2 = generateN2(9, 0); System.out.println(Arrays.toString(a2));*/ Time t = new Time(); t.start(); System.out.println(coutD2(45645, 2)); System.out.println("duration :" + t.stop()); t.start(); easy(0, 45645, 2); System.out.println("duration :" + t.stop()); } }
发表评论
-
构建前端 DSL
2012-10-11 22:10 5285目前在传统的软件开 ... -
circular dependency
2011-12-11 18:23 3854循环依赖是和语言无关 ... -
write html parser
2011-12-01 02:48 2852首先需要声明 html 不能用正则表达式来直接匹配进行内容抽取 ... -
转载:瀑布流布局浅析
2011-09-29 19:02 2789简介 如果你经 ... -
循环引用下的深度克隆
2011-08-04 20:39 2232深度复制和浅度复制 是当初初学 c 遇到的第一批问题,似乎使 ... -
开关状态信息的保存
2010-08-30 15:23 1638系统中常常会存在大量的状态信息,特别是0-1值信息,某个条件是 ... -
LL文法算法-1
2010-03-12 22:30 3429为了实现自顶向下的语法分析器,需要将文法的 1.左递归消 ... -
NFA到DFA的转换演示
2010-03-07 20:57 12682复习一下编译,在龙书中提到的NFA(不确定有穷自动机)到D ... -
gzip压缩实现注意
2010-01-18 22:19 0给你提点建议,你自己实现的compress不是很好哦,1. C ... -
三点共线判断
2010-01-12 19:43 14197经典的计算几何方面问题,判断二维坐标系中是否三个点在一条直线上 ... -
多维数组迭代器应用
2010-01-10 18:04 1661在代码之美中提到了这个问题,经常遇到嵌套数组的情况即多维数组情 ... -
google 开源项目
2009-12-28 20:25 0Google是支持开源运动的最大公司之一,它们现在总共发布 ... -
大数据量,海量数据 处理方法总结
2009-12-12 02:14 0最近有点忙,稍微空闲下来,发篇总结贴。 大数据量的问题是很 ... -
Bloom Filter Technical Report
2009-12-12 01:57 0Bloom Filter Technical Report ... -
找零问题
2009-10-31 16:07 2328问题描述: 有n美元需找零. 美 ... -
背包问题javascript演示
2009-10-26 16:28 2467背景: 经典递归示例:背包问题 ... -
hanoi问题求解
2009-10-19 23:54 0http://jnotnull.iteye.com/ ... -
后缀表达式的javascript转化演示
2009-10-19 23:46 1583复习经典算法,原算法:数据结构(用面向对象方法与c++描述) ... -
LCA In Javascript 演示
2009-10-05 17:24 1685理论: LCA 即 Least Common Anc ... -
Array.prototype.sort 稳定性问题
2009-09-16 13:49 2836引例 首先看一段代码: ...
相关推荐
本课题为基于MATLAB的不变矩答题卡识别。可识别学号,学科,答案,并进行分数统计,以及判断是否及格。...循环结束后就可以统计出考生选对的答案,然后将统计好的数字乘上每道题的分数就可以计算出考生单选题的得分。
偶然间在网上发现ASIC FPGA 数字工程司的一道面试题。按自己的理解做了下。 在centos 下测试了一下应该没问题。内部注释有相关说明
题介绍:本课题为基于 MATLAB 的不变矩答题卡识别。可识别学号,学科,答案,并进行分数统计...循环结束后就可以统计出考生选对的答案,然后将统计好的数字乘上每道题的分数就可以计算出考生单选题的得分。 算法流程图
学python编程时,遇到这样一道题: 计算字符个数(10分) 题目内容: 接受一个由字母和数字组成的字符串,和一个字符,然后输出输入的字符串中含有该字符的个数。不区分大小写。 可以使用以下语句实现字符串s的输入...
matlab图像处理 本课题为基于MATLAB的不变矩答题卡识别。可识别学号,学科,答案,并进行分数统计,以及...循环结束后就可以统计出考生选对的答案,然后将统计好的数字乘上每道题的分数就可以计算出考生单选题的得分。
本课题为基于MATLAB的不变矩答题卡识别。可识别学号,学科,答案,并进行分数统计,以及判断是否及格。...循环结束后就可以统计出考生选对的答案,然后将统计好的数字乘上每道题的分数就可以计算出考生单选题的得分。
包含通信网,数字通信,统计信号,通原,计组,通电,DSP,专集,信安,微机,数物,数值,信号,模电,数模,电磁场。其中,通原试卷年份较早,最终卷子差异比较大,建议把平时布置的习题好好弄懂。另外,信安建议...
”,不给机会重做,10道题做完后,按每题10分统计总得分,然后打印出总分和做错的题数。 (18)学生成绩统计 从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别实现...
因为阅读理解是以大题为单位选题或是抽题,而每个大题都有不确定个小题,所以大题的总分值无法统计,只能输入小题的“分值”。注意:一旦修改试卷的“题量”和“分值”,将会清空已经考过此试卷的考生数据。 课程...
17.统计英文字母/空格/数字个数 18.求s=a+aa+aaa+aa...a的值 19.求解"完数" 20.球体自由落下物理问题 21.猴子吃桃问题 22.乒乓球比赛抽签问题 23.打印菱形图案 24.分数数列求和 25.求1+2!+3!+...+20!的和 26.利用...
外星人使用的并非10进制/16进制等,有些星球居然使用N进制(据统计N都在2~35之间),现在我们将首先给您一个数字表示N进制,然后给出两个数字的字符串,请算出其求和结果并输出,如果输入不能正常计算则输出-1。...
1.4.10. 统计整数二进制表示中 1 的个数........................................................102 1.5. 面试题集合(四) ....................................................................................
基本概念 数据清洗从名字上也看的出就是把"脏"的"洗掉",指发现并纠正数据文件中可识别 的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值等。因为数据仓库 中的数据是面向某一主题的数据的集合,这些...
python入门到高级全栈工程师培训视频学习资料;本资料仅用于学习,请查看...11 强插一道面试题 12 Model连表操作梳理 13 多对多自关联 14 Model操作补充 15 再插两道JavaScript面试题 16 Model操作之select_related以及...
(朗讯的一道笔试题) 答案:可以,可以用_onexit 注册一个函数,它会在main 之后执行; 如果你需要加入一段在main退出后执行的代码,可以使用atexit()函数,注册一个函数。 语法: #include ...