• P1836 【数页码_NOI导刊2011提高(04)】


    P1836 数页码_NOI导刊2011提高(04)

    题目描述

    一本书的页码是从1—n编号的连续整数:1,2,3,…,n。请你求出全部页码中所有单个数字的和,例如第123页,它的和就是1+2+3=6。

    输入输出格式

    输入格式:

    一行为n(1≤n≤10^9)。

    输出格式:

     一行,代表所有单个数字的和。

    输入输出样例

    输入样例: 
    3456789
    输出样例: 
    96342015 

    我的想法是这样的:

    分别考虑个位,十位,百位,千位,万位...

    可以发现

    其中res(i)表示第i位数相加之和。

    故代码如下:

     1 #include <cstdio>
     2 using namespace std;
     3 long long n;
     4 int sum[10]={0,1,3,6,10,15,21,28,36,45};
     5 
     6 int get(int n)
     7 {
     8     if(n<0)return 0;
     9     return n;
    10 }
    11 
    12 long long get_ans(long long n)
    13 {
    14     long long res=0,a=1,b=0;    
    15     while(n>0)
    16     {
    17         res=res+a*(45*(n/10)+sum[get(n%10-1)])+(n%10)*(b+1);
    18         b=b+(n%10)*a;a*=10;
    19         n/=10;
    20     }
    21     return res; 
    22 }
    23 
    24 int main()
    25 {
    26     scanf("%lld",&n);
    27     printf("%lld
    ",get_ans(n));
    28     return 0;
    29 }
    View Code

    我的代码里对打了表。

    觉得不错的话点个赞欧

    ————————————————————————————————————————————————————————————

    自创文章,欢迎转载

  • 相关阅读:
    tomcat启动失败日志
    Windows环境卸载tomcat
    JAVA教程_Windows环境Java安装部署教程
    Tomcat和JDK版本的对应关系
    tomcat启动窗口乱码问题_解决办法
    Windows环境Tomcat安装及环境部署_官方教程
    perl + 匹配前导模式一次或者多次
    5.3.5 聚簇索引:
    freshStartTail 第一次启动时 抛弃旧的日志
    tomcat docBase 和 path
  • 原文地址:https://www.cnblogs.com/lzxzy-blog/p/10323444.html
Copyright © 2020-2023  润新知