博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数字百位nbut 1407 1到n的数中 1出现的次数
阅读量:6680 次
发布时间:2019-06-25

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

文章结束给大家来个程序员笑话:[M]

  • [E] Meow star people learning numbers

  • 间时制约: 1000 ms 内存制约: 65535 K
  • 题问述描
  • Meow star people have a different way of counting. They use J、A、B、C……H、J to represent decimal system. A small cat had just learned it these days, she wrote it again and again, A, B, C, D,……AJ, AA, AB……。One day she wrote many numbers, for example, from A to AJJJ. She was tired of it, and want to calculate how many 'A'were in these numbers, for example there were 2 number of 'A'in number 'AJA'.

  • 输入
  • There are many cases, each contain a string N, means numbers from A to N(1<= strlen <= 9), see more details in hint please.
  • 输出
  • For each case, print the number of 'A'.
  • 例样输入
  • HAC
  • 例样输出
  • 16
  • 提示
  • If N = AC, the numbers are A、B、C、D、E、F、G、H、I、AJ、AA、AB、AC. So we print 6.
  • 源来
  • 小白菜

 

    http://acm.nbut.cn/Problem/view.xhtml?id=1407

    题意 :

A、B、C、D、E、F、G、H、I  J  代表 1 2 3 4 5 6 7  8 9  0   输入一个字符串 长度小于于等9  问在这个字符串代表的数字n  从1 到 n  统共涌现了多少个1 比如 AC 代表13   则有 1 10 11 12 13  共有6个1  输出6
    每日一道理
聪明人学习,像搏击长空的雄鹰,仰视一望无际的大地;愚笨的人学习,漫无目的,犹如乱飞乱撞的无头飞蛾;刻苦的人学习,像弯弯的河流,虽有曲折,但终会流入大海;懒惰的人学习,像水中的木头,阻力越大倒退得越快。
/*路思:  路思全完copy 于官方题解 菜比啊本人   要力努发爆额。。。。。。官方解题地址:http://www.nbutoj.com/009/标题的意思就是求从1到n,全部数字上涌现1的个数。当n为一位数的情况:当n = 0,f(n) = 0; 当n >= 1, f(n) = 1.当n为二位数的情况:如果n = 13,全部数字中,个位和十位上都可能有1,那么离开讨论一下,个位涌现1的数次有两次:1和11,十位涌现1的数次有四次:10、11、12、13,所以f(n) = 2+4 = 6.再看n = 23,十位涌现1的数次有10次,从10到19,个位涌现1的数次为1、11和21,所以f(n) = 3+10=13。现发个位涌现1的数次不仅和个位数有关,还和十位数有关,如果n的个位数大于于等1,则个位涌现的数次为十位数的数字+1,如果n的个位数为0,则个位数涌现1的数次于等十位数的数字。而十位数上涌现1的数次不仅和十位数有关,还和个位数有关:如果十位数字于等1,则十位数上涌现1的数次为个位数的数字加1,如果十位数大于一,则十位数上涌现1的数次为10。当n为三位数的情况:如果n = 123,个位涌现1的个数为13:1、11、21……91,101,111,121。十位涌现1的个数为20:10~19,110~119,。百位涌现1的个数为24:100~123f(123) = 13 + 20 + 24 = 57。在现算计一般的情况:假设n = abcde,这里a、b、c、d、e分别是十进制数n的各个位数上的数字。如果要算计百位上涌现1的数次,它将到受三个要素的影响:百位上的数字,百位以下的数字,百位以上的数字。如果百位上的数字为0,则百位上可能涌现1的数次由更位高决议,比如12013,则可以晓得百位涌现1的情况多是100~199,1100~1199,2100~2199,…,11199~11199,,一共有1200个。也就是由更位高数字(12)决议,并且于等更位高数字(12)×前当位数(100). 如果百位上的数字是1,则百位上可能涌现1的数次收到位高和低位的影响。例如对于12113,受更位高影响,百位涌现1的情况是100~199,1100~1199,2100~2199,…,11100~11199,一共1200个,和面上第一种情况一样,于等更位高数字(12)×前当位数(100)。但它还受低位影响,百位涌现1的情况是12100~12113,一共114个,于等低位数字(123)+1。如果百位上数字大于1,则百位上可能涌现1的数次也仅由更位高决议,比如12213,则百位涌现1的可能性为:100~199,1100~1199,2100~2199,…,11100~11199,12100~12199,一共有1300个,并且于等更位高数字+1(12+1)×前当位数(100)。通过这样的结总演绎,就能够计划出较为高效的代码了。*/#include
using namespace std; int n,len; int cal(int n) { int count = 0; int fac = 1; int lower = 0; int curr = 0; int high = 0; while(n / fac != 0) { lower = n - (n / fac) * fac; curr = (n / fac) % 10; high = n / (fac * 10); switch(curr) { case 0: count += high * fac; break; case 1: count += high * fac + lower + 1; break; default: count += (high+1)*fac; break; } fac *= 10; } return count; } int main() { char ch[10]; while(~scanf("%s",ch)) { len = strlen(ch); n = 0; for(int i = 0; i < len; i ++) { if(ch[i] == 'J') { n *= 10; } else { n = n * 10 + (ch[i]-'A' + 1); } } printf("%d\n",cal(n)); } return 0; }

文章结束给大家分享下程序员的一些笑话语录: 女人篇

  有的女人就是Windows虽然很优秀,但是安全隐患太大。
  有的女人就是MFC她条件很好,然而不是谁都能玩的起。
  有的女人就是C#长的很漂亮,但是家务活不行。
  有的女人就是C++,她会默默的为你做很多的事情。
  有的女人就是汇编虽然很麻烦,但是有的时候还得求它。
  有的女人就是SQL,她会为你的发展带来莫大的帮助。

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

你可能感兴趣的文章
Data truncation: Truncated incorrect DOUBLE value错误的解决方案
查看>>
Asp.Net中WebServices的调用方式
查看>>
[hdu 2544] 最短路
查看>>
Virtualbox中不能为虚拟机打开一个新任务的原因及解决方法
查看>>
排序算法系列之冒泡排序 (3)
查看>>
js获取窗口滚动条高度、窗口可视范围高度、文档实际内容高度、滚动条离浏览器底部的高度...
查看>>
org.tinygroup.validatecomponent-流程校验组件
查看>>
JSP放入Jar包支持
查看>>
依赖注入Bean属性
查看>>
maven 常见错误解决方法
查看>>
9、数值的整数次方------------>剑指offer系列
查看>>
Android中的IPC方式
查看>>
个人作业——软件产品案例分析
查看>>
Java基础班学习笔记(12)集合框架
查看>>
UVa 10346 - Peter's Smokes
查看>>
【C#】结对项目开发-电梯调度仿真系统(内部开发者版)(党云龙、黄为)
查看>>
python的基础
查看>>
二分(折半)查找算法
查看>>
kuangbin专题十六 KMP&&扩展KMP HDU1238 Substrings
查看>>
Javascript 异步加载详解(转)
查看>>