题目描述:

亲们!!我们的外国友人YZ这几天总是睡不好,初中奥数里有一个题目一直困扰着他,特此他向JOBDU发来求助信,希望亲们能帮帮他。问题是:求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。

输入:

输入有多组数据,每组测试数据为一行。

每一行有两个整数a,b(0<=a,b<=1,000,000,000)。

输出:

对应每个测试案例,输出a和b之间1出现的次数。

样例输入:
0 5
1 13
21 55
31 99
样例输出:
1
6
4
7

这个题目是按1491的思路来做的
代码如下
 #include <cstdio>
#include <cstring> char a[], b[]; int main(void){ while (scanf ("%s %s", a,b) != EOF) {
int ra = ;
int numa = ;
int cnta1 = ;
int lena = strlen(a);
for(int i = ; i < lena; i++) {
int q = ;
int tmp = a[i] - '';
if(tmp >= ) {
q = ;
}
ra = numa + q + (ra - cnta1) * + (tmp+) * cnta1;
//个位 //前位
//for example 123
// 12 + 1 + (F(12) - 1的个数 )*10 + 个位的个数 * 前面出现1的个数
// F(11)
// 1--12 1 + 0 1
numa = numa * + tmp;
if(tmp == ) {
cnta1++;
}
}
int rb = ;
int numb = ;
int cntb1 = ;
int lenb = strlen(b);
for(int i = ; i < lenb; i++) {
int q = ;
int tmp = b[i] - '';
if(tmp >= ) {
q = ;
}
rb = numb + q + (rb - cntb1)* + (tmp+)*cntb1;
numb = numb * + tmp;
if(tmp == ) {
cntb1++;
}
}
int ans = ;
if(numb > numa) {
ans = rb - (ra-cnta1);
}
else{
ans = ra - (rb-cntb1);
}
printf("%d\n",ans);
}
return ;
}

一开始提交错误,因为题目中居然没有说a,b的大小关系。

注意47行是numb和numa比较,而不是rb和 ra比较

九度oj 题目1373:整数中1出现的次数(从1到n整数中1出现的次数)的更多相关文章

  1. 九度OJ 题目1384:二维数组中的查找

    /********************************* * 日期:2013-10-11 * 作者:SJF0115 * 题号: 九度OJ 题目1384:二维数组中的查找 * 来源:http ...

  2. 九度oj题目&amp;吉大考研11年机试题全解

    九度oj题目(吉大考研11年机试题全解) 吉大考研机试2011年题目: 题目一(jobdu1105:字符串的反码).    http://ac.jobdu.com/problem.php?pid=11 ...

  3. hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人

    钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  4. 九度oj 题目1007:奥运排序问题

    九度oj 题目1007:奥运排序问题   恢复 题目描述: 按要求,给国家进行排名. 输入:                        有多组数据. 第一行给出国家数N,要求排名的国家数M,国家号 ...

  5. 九度oj 题目1087:约数的个数

    题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...

  6. 九度OJ题目1105:字符串的反码

    tips:scanf,cin输入字符串遇到空格就停止,所以想输入一行字符并保留最后的"\0"还是用gets()函数比较好,九度OJ真操蛋,true?没有这个关键字,还是用1吧,还是 ...

  7. 九度oj题目1009:二叉搜索树

    题目描述: 判断两序列是否为同一二叉搜索树序列 输入:                        开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束. 接 ...

  8. 九度oj题目1002:Grading

    //不是说C语言就是C++的子集么,为毛printf在九度OJ上不能通过编译,abs还不支持参数为整型的abs()重载 //C++比较正确的做法是#include<cmath.h>,cou ...

  9. 九度OJ题目1003:A+B

    while(cin>>str1>>str2)就行了,多简单,不得不吐槽,九度的OJ真奇葩 题目描述: 给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号", ...

随机推荐

  1. SharePoint 2013 安装配置(1)

    在这篇文章中,我将逐步介绍在Windows Server 2012 R2上安装SharePoint 2013. 在进一步详细介绍之前,让我们先了解SharePoint 2013安装的硬件和软件要求.您 ...

  2. Selenium3+webdriver学习笔记4(css方式元素定位)

    #!/usr/bin/env python# -*- coding:utf-8 -*- from selenium import webdriver import time,os # about:ad ...

  3. Opencascade术语笔记。

    1. chamfer 倒角 vs fillet  圆角: 2.boolean operatiron(布尔操作): common(相加),fuse(相交),cut(相减): 3.depressions( ...

  4. IntelliJ IDEA Debug模式的启动

    在服务器启动参数中加入: -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 在程序中设置断点. 运行程序,将停留在断点处. = ...

  5. Dojo常用函数

    1.array函数:和原生的JavaScript中的数组遍历方法forEach方法用法相同 define(['dojo/_base/declare', "dojo/_base/array&q ...

  6. 伪基站SSRP

    伪基站的基本构成包括一台发射主机.一台笔记本电脑.一根天线.一部手机和电源.其中,手机用来测得频点,即某个区域运营商正规基站的频点,然后再把频点和短信内容输入到电脑安装好的程序,通过发射主机和天线进行 ...

  7. DateTime与long互转

    DateTime转long: public static long GetDateLong(object time) { DateTime epoc = TimeZone.CurrentTimeZon ...

  8. java,求1-100以内所有偶数的和。

    package study01; public class Even { public static void main(String[] args) { int sum = 0; for (int ...

  9. 01_1_准备ibatis环境

    01_1_准备ibatis环境 1. 搭建环境:导入相关的jar包 mysql-connector-java-5.1.5-bin.jar(mysql)或者ojdbc6.jar(oracle).ibat ...

  10. Centos7离线部署kubernetes 1.13集群记录

    一.说明 本篇主要参考kubernetes中文社区的一篇部署文章(CentOS 使用二进制部署 Kubernetes 1.13集群),并做了更详细的记录以备用. 二.部署环境 1.kubernetes ...