1 条题解

  • 0
    @ 2026-6-2 23:05:16

    那么问题来了

    注意到他把每个数字拼成一串然后想加每一个数字

    他就和从 1-N 的每个数的每一位相加的和是一个效果

    由于N很小,那么我们直接从1-N 遍历 计算每个数的位数和 全部相加即为答案

    C++

    ll n;
    int main()
    {
        AC;
        cin>>n;
        ll ans=0;
        for(int i=1;i<=n;++i)
        {
            ll x=i;
            while(x>0)
            {
                ans+=x%10;
                x/=10;
            }
        }
        cout<<ans;
        return 0;
    }
    
    

    Python

    n = int(input())
    ans = 0  
    # 遍历 1 到 n 的所有数字
    for i in range(1, n + 1):
        x = i
        # 拆解每一位数字并累加
        while x > 0:
            ans += x % 10  # 取最后一位
            x = x // 10    # 去掉最后一位
    print(ans)
    
    • 1

    信息

    ID
    1167
    时间
    1000ms
    内存
    256MiB
    难度
    2
    标签
    递交数
    3
    已通过
    3
    上传者