• Digit sum-----The Preliminary Contest for ICPC Asia Shanghai 2019


    A digit sum S_b(n)Sb(n) is a sum of the base-bb digits of nn. Such as S_{10}(233) = 2 + 3 + 3 = 8S10(233)=2+3+3=8, S_{2}(8)=1 + 0 + 0 = 1S2(8)=1+0+0=1, S_{2}(7)=1 + 1 + 1 = 3S2(7)=1+1+1=3.

    Given NN and bb, you need to calculate sum_{n=1}^{N} S_b(n)n=1NSb(n).

    InputFile

    The first line of the input gives the number of test cases, TT. TT test cases follow. Each test case starts with a line containing two integers NN and bb.

    1 leq T leq 1000001T100000

    1 leq N leq 10^61N106

    2 leq b leq 102b10

    OutputFile

    For each test case, output one line containing Case #x: y, where xx is the test case number (starting from 11) and yy is answer.

    样例输入

    2
    10 10 8 2

    样例输出

    Case #1: 46
    Case #2: 13
    #include <stdio.h>
    
    int main()
    {
        long long t, tot, n, b, a[15], x, num, sum, i, j, N, temp;
        for(i=0;i<13;i++)
        {
            a[i] = i;
        }
        scanf("%lld", &t);
        tot = 0;
        while(t--)
        {
            scanf("%lld %lld", &n, &b);
            temp = (b-1)*b/2;
            x = 1;
            sum = 0;
            while(n>=x)
            {
                sum = sum + temp * x * (n / (x * b));
                N = n % (x * b);
                num = 0;
                for(j=0;j+x<=N;j+=x)
                {
                    if(num==b) num = 0;
                    sum = sum + a[num] * x;
                    num++;
                }
                if(num==b) num=0;
                sum = sum + a[num]*(N-j+1);
                x *= b;
            }
            tot++;
            printf("Case #%lld: %lld
    ", tot, sum);
        }
        return 0;
    }


  • 相关阅读:
    git
    fragment
    Builder模式
    代码混淆
    android studio快捷键
    小知识点
    angular组件使用
    英语摘要2019-6-4
    英语笔记2019-4-3
    搭建Eureka注册中心时遇到的问题
  • 原文地址:https://www.cnblogs.com/0xiaoyu/p/11528861.html
Copyright © 2020-2023  润新知