(留坑)

/*
不知道为什要找的循环节TM这么长
*/
#include<cstdio>
#include<cstdlib>
#include<cstring> using namespace std; #ifdef unix
#define LL "%lld"
#else
#define LL "%I64d"
#endif const int maxn=;
const long long mo=;
const long long mo2=mo*+;
const long long mo3=mo2*; char s[maxn]; struct matrix
{
long long z[][];
matrix()
{
memset(z,,sizeof(z));
}
matrix operator*(const matrix &a)const
{
matrix ans;
for (int b=;b<=;b++)
for (int c=;c<=;c++)
for (int d=;d<=;d++)
ans.z[b][c]=(ans.z[b][c]+z[b][d]*a.z[d][c]%mo)%mo;
return ans;
}
matrix operator+(const matrix &a)const
{
matrix ans;
for (int b=;b<=;b++)
for (int c=;c<=;c++)
for (int d=;d<=;d++)
ans.z[b][c]=(ans.z[b][c]+z[b][d]*a.z[d][c]%mo2)%mo2;
return ans;
}
}m1,m2; struct bign
{
int z[maxn],l;
void init()
{
memset(z,,sizeof(z));
scanf("%s",s+);
l=strlen(s+);
for (int a=;a<=l;a++)
z[a]=s[l-a+]-'';
}
long long operator%(const long long &a)const
{
long long b=;
for (int c=l;c>=;c--)
b=(b*+z[c])%a;
return b;
}
}z; long long get(long long v)
{
if (v==) return ;
m1.z[][]=;
m1.z[][]=;
m2.z[][]=;
m2.z[][]=m2.z[][]=m2.z[][]=;
while (v)
{
if (v&) m1=m1*m2;
m2=m2*m2;
v>>=;
}
return m1.z[][];
} long long get1(long long v)
{
if (v==) return ;
m1.z[][]=;
m1.z[][]=;
m2.z[][]=;
m2.z[][]=m2.z[][]=m2.z[][]=;
while (v)
{
if (v&) m1=m1+m2;
m2=m2+m2;
v>>=;
}
return m1.z[][];
} int main()
{
freopen("na.in","r",stdin);
freopen("na.out","w",stdout); int t;
scanf("%d",&t);
for (int a=;a<=t;a++)
{
z.init();
long long v1=z % mo3;
v1=get1(v1);
printf(LL "\n",get(v1));
} return ;
}

清北国庆day1 (脑)残的更多相关文章

  1. 清明培训 清北学堂 DAY1

    今天是李昊老师的讲授~~ 总结了一下今天的内容: 1.高精度算法 (1)   高精度加法 思路:模拟竖式运算 注意:进位 优化:压位 程序代码: #include<iostream>#in ...

  2. 4.4清北学堂Day1 主要内容:数论,数学

    Day 1; 1.常见的高精 输入输出都用字符数组: 字符数组的实际长度用strlen()来求: 运算时倒序运算,把每一个字符都-‘0’ 进位的处理上也要注意: 小数减大数时先判断大小然后加负号 只能 ...

  3. 五一培训 清北学堂 DAY1

    今天是冯哲老师的讲授~ 1.枚举 枚举也称作穷举,指的是从问题所有可能的解的集合中一一枚举各元素. 用题目中给定的检验条件判定哪些是无用的,哪些是有用的.能使命题成立的即为其解. 例一一棵苹果树上有n ...

  4. 清北合肥day1

    题目: 1.给出一个由0,1组成的环 求最少多少次交换(任意两个位置)使得0,1靠在一起 n<=1000 2.两个数列,支持在第一个数列上区间+1,-1 每次花费为1 求a变成b的最小代价 n& ...

  5. 2017 五一 清北学堂 Day1模拟考试结题报告

    预计分数:100+50+50 实际分数:5+50+100 =.= 多重背包 (backpack.cpp/c/pas) (1s/256M) 题目描述 提供一个背包,它最多能负载重量为W的物品. 现在给出 ...

  6. 2017.10.1 国庆清北 D1T1 zhx的字符串题

    题目背景 2017国庆清北D1T1 题目描述 你是能看到第一题的 friends 呢. ——hja 何大爷对字符串十分有研究,于是天天出字符串题虐杀 zhx.何大爷今天为 字符串定义了新的权值计算方法 ...

  7. 清北学堂 2020 国庆J2考前综合强化 Day7

    目录 1. 题目 T1 魔力石 题目描述 Sol T2 和 题目描述 Sol T3 数对 题目描述 Sol T4 海豹王国 题目描述 Sol 考场策略 1. 题目 T1 魔力石 题目描述 题目描述 小 ...

  8. 清北Day4

    版权声明:如需转载请标明出处,未得到本人许可请勿转载. 今天就可以看到传说中的 数据结构 嘿嘿嘿嘿 都有什么呢 链表 队列 栈 st表 hash 线段树 树链剖分 一.栈: 放出来这个看烂了的图 值得 ...

  9. 清北学堂2017NOIP冬令营入学测试P4745 B’s problem(b)

    清北学堂2017NOIP冬令营入学测试 P4745 B's problem(b) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 题目描 ...

随机推荐

  1. HDU1150 Machine Schedule

    匈牙利算法 目前为止还是半懂不懂的状态 #include<iostream> #include<cstdio> #include<cstring> using na ...

  2. IEnumerable 遍历用法

    咋一看到IEnumerable这个接口,我们可能会觉得很神奇,在一般的编程时,基本上我们是想不到去用它的,可是,俗话说得好,存在便是道理,那么,它对我们来说,能够带来哪些奇妙的事情呢? 要想弄懂它,我 ...

  3. 数据结构算法C语言实现(五)---2.3重新定义线性链表及其基本操作

    一.简述 ...由于链表在空间的合理利用上和插入.删除时不需要移动等的优点,因此在很多场合下,它是线性表的首选存储结构.然而,它也存在着实现某些基本操作,如求线性表的长度时不如顺序存储结构的缺点:另一 ...

  4. Newtonsoft.Json动态过滤属性

    Newtonsoft.Json动态过滤属性 接口写的多了,会发现很多的问题.同一个dto,不同的action返回的字段个数不一样.往往开发人员因为懒或者各种原因一股脑的全返回,会浪费很多流量且用户体验 ...

  5. Node.js使用Mongoose包操作MongoDB数据库

    1. 安装Mongoose npm install mongoose 2. 使用 2.1 创建连接 var mongoose = require('mongoose'); mongoose.conne ...

  6. 常见linux命令释义(第六天)——shell环境变量

    太懒了,这几天好像得了懒癌,一点都不想写博客.后来想想,知识嘛,还是分享出来的好.第一治自己的懒癌:第二顺便巩固下自己的知识. Linux的变量分为两种,一种是系统变量,是系统一经启动,就写进内存中的 ...

  7. HTTP,TCP/IP协议

    本文转自cnblogs:http://www.cnblogs.com/xhwy/archive/2012/03/03/2378293.html 一.概述 1.1 TCP   HTTP   UDP: 都 ...

  8. Flask-WTF form doesn't have attribute 'validate_on_submit'问题

    今天在学习WTF表单的时候遇到了这个问题,在stackoverflow上搜索查到了解决方案 from flask.ext.wtf import Form from wtforms import Tex ...

  9. 60行JavaScript俄罗斯方块

    <!doctype html><html><head></head><body> <div id="box" st ...

  10. OpenGL Tutorial

    https://open.gl https://www.processing.org/tutorials/pshader/