zoukankan      html  css  js  c++  java
  • 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

    我的代码里对打了表。

    觉得不错的话点个赞欧

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

    自创文章,欢迎转载

  • 相关阅读:
    PHP反射
    Ramda函数式编程之PHP
    双因素算法存疑
    百度编辑器复制微信图片无法保存
    go语言可变参数的坑
    xorm的sql builder
    vue前后分离动态路由和权限管理方案
    分布式唯一id生成器的想法
    Java IO 之 InputStream源码
    图解 & 深入浅出Java初始化与清理:构造器必知必会
  • 原文地址:https://www.cnblogs.com/lzxzy-blog/p/10323444.html
Copyright © 2011-2022 走看看