题目链接

题目描述

Consider digits strings with length n, how many different strings have the sum of digits are multiple of 4?

输入描述:

There are several test cases end with EOF. For each test case, there is an integer in one line: n, the length of the digits string. (1≤n≤1,000,000,000).

输出描述:

For each case, output the number of digits strings with length n have the sum of digits are multiple of 4 in one line. The numbers maybe very large, you should output the result modular 2019.

输入

1
2
3
4

输出

3
25
249
479

思路

长度为1有四种情况:

  1. %4 == 0 有3个
  2. %4 == 1 有3个
  3. %4 == 2 有2个
  4. %4 == 3 有2个

计算长度为N的分为四种情况:
令长度为N-1模4为{0, 1, 2, 3}的数量为T0, T1, T3, T4

  1. %4 == 0
    (%4=0) * T0 + (%4=1) * T3 + (%4=2) * T2 + (%4=3) * T1
  2. %4 == 1
    (%4=0) * T1 + (%4=1) * T0 + (%4=2) * T3 + (%4=3) * T2
  3. %4 == 2
  4. (%4=0) * T2 + (%4=1) * T1 + (%4=2) * T0 + (%4=3) * T3
  5. %4 == 3
    (%4=0) * T3 + (%4=1) * T2 + (%4=2) * T1 + (%4=3) * T0

根据这个思路可以用矩阵快速幂加快一下

#include <bits/stdc++.h>
#define LL  long long
#define P pair<int, int>
#define lowbit(x) (x & -x)
#define mem(a, b) memset(a, b, sizeof(a))
#define REP(i, n) for (int i = 1; i <= (n); ++i)
#define rep(i, n) for (int i = 0; i < (n); ++i)
#define N 100005
using namespace std;void mul(LL x[], LL y[]) {LL t[4];t[0] = x[0] * y[0] + x[1] * y[3] + x[3] * y[1] + x[2] * y[2];t[1] = x[1] * y[0] + x[0] * y[1] + x[2] * y[3] + x[3] * y[2];t[2] = x[0] * y[2] + x[2] * y[0] + x[1] * y[1] + x[3] * y[3];t[3] = x[0] * y[3] + x[3] * y[0] + x[1] * y[2] + x[2] * y[1];rep (i, 4)  x[i] = t[i] % 2019;
}LL quick(LL x) {LL b[4] = {3, 3, 2, 2};LL a[4] = {3, 3, 2, 2};while (x) {if (x & 1) mul(a, b);mul(b, b);x >>= 1;}return a[0];
}int main() {#ifndef ONLINE_JUDGEfreopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);
#endifLL n;while (scanf("%lld", &n) != EOF) {LL ans = quick(n-1);printf("%d\n", ans % 2019);}return 0;
}

湖南大学第十四届ACM程序设计新生杯(重现赛)L-The Digits String (矩阵快速幂)相关推荐

  1. 湖南大学第十四届ACM程序设计新生杯(重现赛)- FFind the AFei Numbers(数位dp)

    题目链接 题目描述 AFei loves numbers. He defines the natural number containing "520" as the AFei n ...

  2. 湖南大学第十四届ACM程序设计大赛 H Kuangyeye and hamburgers

    链接:https://ac.nowcoder.com/acm/contest/338/H 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  3. 怀化学院计算机设计大赛报名系统,怀化学院六十周年校庆第十一届大学生计算机程序设计竞赛暨2018年湖南省第十四届大学生程序设计大赛选拔赛成功举办...

    原标题:怀化学院六十周年校庆第十一届大学生计算机程序设计竞赛暨2018年湖南省第十四届大学生程序设计大赛选拔赛成功举办 比赛 信息 1 比赛名称:怀化学院六十周年校庆第十一届大学生计算机程序设计竞赛暨 ...

  4. 十四届蓝桥青少组模拟赛Python-20221108

    十四届蓝桥青少组模拟赛Python-20221108 T1.二进制位数 十进制整数2在十进制中是1位数,在二进制中对应10,是2位数. 十进制整数22在十进制中是2位数,在二进制中对应10110,是5 ...

  5. 南华大学第十五届ACM程序设计竞赛(重现赛) E 免费机票

    链接:https://ac.nowcoder.com/acm/contest/699/E 来源:牛客网 题目描述 某华大学小飞中奖了!!!奖品是一张免费飞机票,唯一遗憾的是,这张飞机票有限定区间,需要 ...

  6. 免费机票【SPFA】【南华大学第十五届ACM程序设计竞赛】

    题目链接 题目描述 某华大学小飞中奖了!!!奖品是一张免费飞机票,唯一遗憾的是,这张飞机票有限定区间,需要从k个区间中选择其一.小飞打算高高兴兴的出去玩啦,但是,从s地出发,去往e地,可能没有直达的飞 ...

  7. 南华大学第十五届ACM程序设计竞赛(重现赛)E 免费机票(单边最短路)

    题目链接 题目描述 某华大学小飞中奖了!!!奖品是一张免费飞机票,唯一遗憾的是,这张飞机票有限定区间,需要从k个区间中选择其一.小飞打算高高兴兴的出去玩啦,但是,从s地出发,去往e地,可能没有直达的飞 ...

  8. 十四届全国大学生“恩智浦”杯智能汽车竞赛信标组总结(2)

    因为一些事情耽搁了几天,如今总算空出时间续写了.第一篇主要讲运动学分析,接下来讲PID控制与调速. 有关PID的形象描述有很多,最多的就是那个万恶的利用水龙头控制水箱水量,很容易理解,公式也很简单,而 ...

  9. 十四届全国大学生“恩智浦”杯智能汽车竞赛信标组总结(4)

    通过前三篇文章,车子程序的大体框架已经建立起来了.但做车嘛总是会有各种各样的问题. 首当其冲的当然就是信标灯的闪烁问题,按照第三篇文章的思路在看不到灯的时候原地旋转直到看到灯,再按照速度合成将前行速度 ...

最新文章

  1. springboot取yml中的值_SpringBoot 中从yml配置文件中读取常用的参数值
  2. SSH服务--Linux学习笔记
  3. 安卓原生读写u盘_aigo Type-C固态U盘速度如何?好用吗?
  4. 换手机的等等!什么时候能用上1000元级5G手机?中国移动公布时间表
  5. 79. 基于 PHP 的用户认证
  6. 词云python灿烈,Python jieba分词、词云、文件读取、函数调用、匿名函数
  7. matlab在二值图像上画曲线_数字图像处理:Image Printing Program Based on Halftoning
  8. RGBA 图片格式转换 RGB 无损
  9. windows7安装ffmpeg教程
  10. Python爬虫入门案例
  11. WIN10彻底禁用UAC(用户账户控制)
  12. 微博热搜数据变化趋势视频化展示
  13. 工作多少年,在哪个行业,可以拿到年薪50万+
  14. 使用uniapp编写词霸每日一句页面
  15. docker service
  16. html 做填写的表格,CSS写的简单表格示例
  17. 如何合理运用美容院资源
  18. 读取图片文件到剪贴板时的html格式
  19. 如何搭建SPA-单页面应用
  20. 第2章 基础设施即服务(IaaS)-2-Docker

热门文章

  1. NYOJ--517--最小公倍数(大数打表)
  2. IIS发布站点错误收集(持续更新)
  3. android adt 最新下载地址
  4. Java 并发专题 :FutureTask 实现预加载数据 在线看电子书、浏览器浏览网页等
  5. C#一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第100位数是多少, 用递归算法实现。...
  6. SQL中条件和比较关键字Case的使用方法(case的结果就是得到了一个值)
  7. weblogic常见漏洞
  8. php写新闻浏览历史,PHP实现浏览历史记录
  9. 热部署在java中的包名_09-springboot工程中的热部署实现。
  10. C# 系统应用之获取Windows最近使用记录