• [1475] Bachelor

  • 时间限制: 1000 ms 内存限制: 65535 K
  • 问题描述
  • 炎热的暑期集训就要结束了,在这短短的20天,大家都很努力,因为很多都是光棍嘛。balabala
    所以 Marknoon 先森一直耿耿于怀,毕竟他也是单身嘛。
    有一天,Marknoon 先森看着一串数字,发现了那个跟他同命相连的数字1,所以他就开始无聊起来,想知道从数字1到数字N,一共出现了几个1。
    例如N=12,则1的个数为5,出现1的数字分别为1,10,11,12。
  • 输入
  • 输入一个数N(1 <= N <= 2147483647)。
  • 输出
  • 输出从1到N中所有数字里出现 1 的个数。
  • 样例输入
  • 3
    13
    123
  • 样例输出
  • 1
    6
    57
  • 提示
  • 来源
  • Hungar
按位置计算,即分别计算个位,十位,百位,千位 。。。的  出现的次数,然后将他们的个数和输出
这里以 为例进行说明: 个位为 的情况 : _ _ _ 横线部分 可以是 到 的任意数字 所以个位 一共有 215个 ------- ( + )
      十位为 的情况: _ _ _ 横线部分 可以是 到 的任意数字 十位 一共有 个 ------- ( +)*
百位为 的情况: _ _ _ 横线部分 可以是 到 的任意数字 百位 一共有 个 ------ * + +
千位为 的情况: _ _ _ 横线部分 可以是 到 的任意数字 千位 一共有 个 ------ ( + )*
当然 还有 为 的情况 如果是 的话 则 有 * ---- 十位 有 个
#include<iostream>
#include<cstdio>
#include<cstring> using namespace std; char str[];
int digit[]; long long Zero[]={,,,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12}; int cal(int l,int r){ //得到digit数组里面[i,j]区间构成的数
int ans=;
for(int i=l;i<=r;i++)
ans=ans*+digit[i];
return ans;
} int main(){ //freopen("input.txt","r",stdin); while(~scanf("%s",str)){
int len=strlen(str);
for(int i=;i<len;i++)
digit[i]=str[i]-'';
long long ans=;
int l,r;
for(int i=;i<len;i++){
l=cal(,i-);
if(digit[i]>) //如果数字大于1 则用左边 digit[0,i-1] 构成的数 加1 乘上 10的(右边位数)次方
ans+=(l+)*Zero[len--i];
else if(digit[i]==){ //如果数字等于1 则用左边 digit[0,i-1] 构成的数 乘上 10的(右边位数)次方 后 加上 右边digit[i,len-1] 构成的数 再加上1
r=cal(i+,len-);
ans+=l*Zero[len--i]+r+;
}else if(digit[i]==) //如果数字等于0 则用左边digit[0,i-1] 构成的数 直接乘上 10的(右边位数)次方
ans+=l*Zero[len--i];
}
cout<<ans<<endl;
}
return ;
}

NBUT [1475] Bachelor的更多相关文章

  1. noj [1475] Bachelor (找1的个数)

    http://ac.nbutoj.com/Problem/view.xhtml?id=1475 [1475] Bachelor 时间限制: 1000 ms 内存限制: 65535 K 问题描述 炎热的 ...

  2. NBUT 1457 莫队算法 离散化

    Sona Time Limit:5000MS     Memory Limit:65535KB     64bit IO Format: Submit Status Practice NBUT 145 ...

  3. - >code vs 1475 m进制转十进制

    1475 m进制转十进制  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver 题解  查看运行结果   题目描述 Description 将m进制数n转化成一个 ...

  4. ACM: NBUT 1107 盒子游戏 - 简单博弈

     NBUT 1107  盒子游戏 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:  Practice  Appoint ...

  5. ACM: NBUT 1105 多连块拼图 - 水题 - 模拟

    NBUT 1105  多连块拼图 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:  Practice  Appoint ...

  6. ACM: NBUT 1646 Internet of Lights and Switches - 二进制+map+vector

    NBUT 1646 Internet of Lights and Switches Time Limit:5000MS     Memory Limit:65535KB     64bit IO Fo ...

  7. NBUT 1525 Cow Xor(01字典树+前缀思想)

    [1525] Cow Xor 时间限制: 2000 ms 内存限制: 65535 K 问题描述 农民约翰在喂奶牛的时候被另一个问题卡住了.他的所有N(1 <= N <= 100,000)个 ...

  8. NBUT 1186 Get the Width(DFS求树的宽度,水题)

    [1186] Get the Width 时间限制: 1000 ms 内存限制: 65535 K 问题描述 It's an easy problem. I will give you a binary ...

  9. NBUT 1635 Explosion(最小顶点覆盖)

    [1635] Explosion 时间限制: 10000 ms 内存限制: 65535 K 问题描述 there is a country which contains n cities connec ...

随机推荐

  1. Linux反编译

    转自:http://bbs.pediy.com/showthread.php?threadid=11315 一个简单的linux crackme的逆向前言    最不喜欢的就是写破解教程,酒后一时冲动 ...

  2. SQLSERVER 免费对比数据库结构和数据的工具支持:SQL Server 2012, SQL Server 2008 and SQL Server 2005

    New xSQL Schema Compare - version 5 Compare the schemas of two SQL Server databases, review differen ...

  3. (转)在NGUI使用图片文字(数字、美术字)(直接可用于UILable)

    本文永久地址:http://www.omuying.com/article/24.aspx,[文章转载请注明出处!] 在 Unity 开发过程中,我们经常会使用到美术提供的图片文字(数字)来美化我们的 ...

  4. [Go] Returning Multiple Values from a Function in Go

    Returning multiple values from a function is a common idiom in Go, most often used for returning val ...

  5. TCP/IP具体解释学习笔记--TCP的超时与重传

    1.基本概念 TCP之所以能够安全的将数据在传输中的安全性,是因为它每次给对方发送数据,都会等待对方给个确认,当长时间收不到这个确认,发送端就会重发这个数据. 2.超时时间的測量 要測超时时间,TCP ...

  6. 离线LCA学习

    题目1 : 近期公共祖先·二 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描写叙述 上上回说到,小Hi和小Ho用很拙劣--或者说粗糙的手段山寨出了一个奇妙的站点,这个站点能 ...

  7. uni/微信小程序 - 使用字体图标

    阿里字体图标:http://www.iconfont.cn/home/index?spm=a313x.7781069.1998910419.2 1.单个/ 多个选择字体图标 2. 导入字体库 可以参考 ...

  8. 在线帮助文档编辑器gitbook

    https://www.gitbook.com/editor/windows https://yuzeshan.gitbooks.io/gitbook-studying/content/howtous ...

  9. Linux内核配置:Kconfig

    Linux内核源码中,差不多有300个内核子目录都包含了名为Kconfig的文件.这个文件用于配置其所在目录的源码的特性.Kconfig中的每个配置参数都有附带的帮助文本,配置子系统会解析Kconfi ...

  10. 【JDBC】Mysql海量数据插入——PreparedStatement加快数据插入

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5861959.html 使用JDBC连接数据库时,如果插入的数据量大,一条一条地插入数据会变得非常缓慢.此时,我 ...