打卡信奥刷题(1789)用C++实现信奥 P8811 [蓝桥杯 2022 国 C] 六六大顺

P8811 [蓝桥杯 2022 国 C] 六六大顺

题目描述

六六大顺,本指农历六月初六。多用于祝福中年人士家庭幸福,工作顺利,事业有成,身体健康。源自《左传》“君义,臣行,父慈,子孝,兄爱,弟敬,此数者累谓六顺也。”

666 在我国自古以来是一个吉祥的数字,定义数列 A=(a1,a2,⋯ ,ai,⋯ )A = (a_1,a_2,\cdots,a_i,\cdots)A=(a1,a2,,ai,),其中 a1=6,a2=66,⋯ ,ai=10⋅ai−1+6a_1 = 6, a_2 = 66, \cdots, a_i = 10\cdot a_{i−1}+6a1=6,a2=66,,ai=10ai1+6

定义一个数列 B=(b1,b2,⋯ ,bi,⋯ )B = (b_1,b_2,\cdots,b_i,\cdots)B=(b1,b2,,bi,),其中 b1=6×6,b2=66×66,⋯ ,bi=ai×aib_1 = 6 \times 6, b_2 = 66\times66, \cdots, b_i = a_i \times a_ib1=6×6,b2=66×66,,bi=ai×ai

现在小蓝想知道数列 BBB 的前 nnn 项的和是多少,你能帮帮小蓝吗?

输入格式

输入一行包含一个正整数 nnn

输出格式

输出一行包含一个整数表示数列 BBBnnn 项的和。

输入输出样例 #1

输入 #1

3

输出 #1

447948

说明/提示

【样例说明】

b1=6×6=36,b2=66×66=4356,b3=666×666=443556b_1 = 6×6 = 36,b_2 = 66×66 = 4356,b_3 = 666×666 = 443556b1=6×6=36,b2=66×66=4356,b3=666×666=443556,所以前三项的和为 36+4356+443556=44794836 + 4356 + 443556 = 44794836+4356+443556=447948

【评测用例规模与约定】

对于 20%20\%20% 的评测用例,1≤n≤1001≤n≤1001n100

对于 50%50\%50% 的评测用例,1≤n≤1051≤n≤10^51n105

对于所有评测用例,1≤n≤1071\le n\le 10^71n107

蓝桥杯 2022 国赛 C 组 H 题。

C++实现

#include <stdio.h>
using namespace std;
const int MAX = 2e7 + 1;
int n, arr[MAX];//arr模拟高精数组
int main()
{
    scanf("%d", &n);
    arr[0] = 4 * n % 10, arr[1] = 4 * n / 10;//将4n存入数组
    for (int i = 1; i <= n; ++i)//++i卡常小妙招(bushi
	{
        arr[i << 1] = 4, arr[i] -= 8;//将1010…100,22…20的4倍加给数组
        arr[i + 1] += arr[i] / 10, arr[i] %= 10;
        if (arr[i] < 0)
        {
            arr[i] += 10, --arr[i + 1];
        }//进退位
    }
    for (int i = n + 1; arr[i] < 0; ++i)
    {
        arr[i + 1] += arr[i] / 10, arr[i] %= 10;
        arr[i] += 10, --arr[i + 1];
    }//单纯进位 
    for (int i = 2 * n - 1; ~i; --i)
	{
        arr[i] += 10 * arr[i + 1];
        putchar(arr[i] / 9 + '0');
        arr[i] %= 9;
    }//一边输出一边除以9 
    return 0; 
}

在这里插入图片描述

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值