• 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

    我的代码里对打了表。

    觉得不错的话点个赞欧

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

    自创文章,欢迎转载

  • 相关阅读:
    Web Service简介
    初识web service
    HTTP 状态代码的完整列表
    【转】JBPM4 RepositoryService
    【转】SD和SDHC和SDXC卡的区别
    【转】PP常用TCODE
    【转】SAP会计科目表
    【转】JBPM4中 state 和 task 的不同
    【转】学习一下车险
    【转】JBPM4 TaskService
  • 原文地址:https://www.cnblogs.com/lzxzy-blog/p/10323444.html
Copyright © 2020-2023  润新知