清北国庆day1 (脑)残

(留坑)

/*
不知道为什要找的循环节TM这么长
*/
#include<cstdio>
#include<cstdlib>
#include<cstring>

using namespace std;

#ifdef unix
#define LL "%lld"
#else
#define LL "%I64d"
#endif

const int maxn=200;
const long long mo=1000000007;
const long long mo2=mo*2+2;
const long long mo3=mo2*3;

char s[maxn];

struct matrix
{
    long long z[3][3];
    matrix()
    {
        memset(z,0,sizeof(z));
    }
    matrix operator*(const matrix &a)const
    {
        matrix ans;
        for (int b=1;b<=2;b++)
            for (int c=1;c<=2;c++)
                for (int d=1;d<=2;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=1;b<=2;b++)
            for (int c=1;c<=2;c++)
                for (int d=1;d<=2;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,0,sizeof(z));
        scanf("%s",s+1);
        l=strlen(s+1);
        for (int a=1;a<=l;a++)
            z[a]=s[l-a+1]-‘0‘;
    }
    long long operator%(const long long &a)const
    {
        long long b=0;
        for (int c=l;c>=1;c--)
            b=(b*10+z[c])%a;
        return b;
    }
}z;

long long get(long long v)
{
    if (v==0) return 0;
    m1.z[1][1]=0;
    m1.z[1][2]=1;
    m2.z[1][1]=0;
    m2.z[1][2]=m2.z[2][1]=m2.z[2][2]=1;
    while (v)
    {
        if (v&1) m1=m1*m2;
        m2=m2*m2;
        v>>=1;
    }
    return m1.z[1][1];
}

long long get1(long long v)
{
    if (v==0) return 0;
    m1.z[1][1]=0;
    m1.z[1][2]=1;
    m2.z[1][1]=0;
    m2.z[1][2]=m2.z[2][1]=m2.z[2][2]=1;
    while (v)
    {
        if (v&1) m1=m1+m2;
        m2=m2+m2;
        v>>=1;
    }
    return m1.z[1][1];
}

int main()
{
    freopen("na.in","r",stdin);
    freopen("na.out","w",stdout);

    int t;
    scanf("%d",&t);
    for (int a=1;a<=t;a++)
    {
        z.init();
        long long v1=z % mo3;
        v1=get1(v1);
        printf(LL "\n",get(v1));
    }

    return 0;
}
时间: 2024-10-12 03:03:04

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

五一清北总结——day1+day2

五一清北学习总结 ——day1+day2 一.排序 1.快速排序 O(nlogn)的排序,用sort可以快速完成,但是可以被卡,手写sort利用随机数可以避免被卡掉. 代码: void quick_sort(int *a, int l, int r) { swap(a[l], a[rand()*rand() % (r -l + 1) +l]); int tmp = a[l]; int l_ = l, r_ = r; while (l < r) { while (l < r) { if (a[r

清北夏令营考试day1

清北夏令营考试day1 送分题(songfen) Time Limit:1000ms   Memory Limit:128MB 题目描述: LYK喜欢干一些有挑战的事,比如说求区间最大子段和.它知道这个题目有O(n)的做法.于是它想加强一下. 也就是说,LYK一开始有n个数,第i个数字是ai,它找来了一个新的数字P,并想将这n个数字中恰好一个数字替换成P.要求替换后的最大子段和尽可能大. LYK知道这个题目仍然很简单,于是就扔给大家来送分啦~ 注:最大子段和是指在n个数中选择一段区间[L,R](

清北押题班(1)

清北押题冲刺班Text1 T1 Count 问有几个无序二元组 $ (x ?, ?y) $ 满足 $ xy \equiv 1?(mod?P ) $ , $ 0 \leq x < P?, ?0 \leq y <P $ 解题思路: 你没看错,这是day1的T1,一道赤裸裸的数学题. Subtask 1:枚举 $ O(P^2) $ 个二元组,选出符合条件的,再去重: Subtask 2:可以发现模 $ P $ 意义下,一个数 x 有逆元,当且仅当 $ gcd(x, P) = 1 $ .并且如果 $

脑残问题收集

今天碰到几个脑残的问题 1.在sql语句执行的时候,报错提示java.sql.SQLException: ORA-00911: 无效字符  最后发现时sql语句后面多加了个分号: 2.在sql语句执行始终查到数据,放在数据库没问题,最后发现时自己的传参的顺序搞错了,纠结了半天唉! 3.用TreeTable插件的时候,异步请求增加子级菜单始终不能,最后发现是在引用的时候单引号和双引号搞错了,以后大伙用插件的话要记得按照插件示例中的代码格式来写呀!

清北学堂2017NOIP冬令营入学测试 P4744 A’s problem(a)

清北学堂2017NOIP冬令营入学测试 P4744 A's problem(a) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试题,每三天结算一次成绩.参与享优惠 描述 这是一道有背景的题目,小A也是一个有故事的人.但可惜的是这里纸张太小,小A无法把故事详细地说给大家听.可能小A自己也讲不清楚自己的故事,因为如果讲清了,也就没有这道题目了-- 小A的问题是这个样子,它找到了n份不同的工作,第i份工作每个月有ai的工资,每份工作需要小A每天

脑残集(1)把一个字符串内的正整数相加

1 #include "string" 2 typedef std::basic_string<TCHAR> tstring; 3 int _tmain(int argc, _TCHAR* argv[]) 4 { 5 6 tstring str= _T("没2有60最脑40残只有100更脑残!5"); 7 const tstring numSet = _T("0123456789"); 8 tstring::size_type pos

android 反编译(dex 和 odex),非脑残转帖,绝对可靠

Android 反编译 反编译odex文件(例如framework.odex),若是反编译dex,直接第4步 1.由于反编译odex的工具在D:\Develop tools\android反编译工具\odex中,因此为了执行命令方便一点在odex文件夹里面,将system的文件夹结构给新建一下,将反编译的odex中所引用的所有包都放到对应的目录下 system----- |-------app |-------framework 2.java -jar baksmali-2.0.3.jar -d

有个学霸找我这个脑残要这道题的无脑代码——立体图

#include<iostream> #include<cstring> #include<cstdio> using namespace std; int v[52][52]; char s[2001][2001]; int n,m,x,y; void wri(int a,int b) { s[a][b]='+'; s[a+1][b]='-'; s[a+2][b]='-'; s[a+3][b]='-'; s[a+4][b]='+'; s[a][b-1]='|'; s[

java javaEE javaWEB J2EE程序猿是脑残的程序员,一辈子打工的程序员

这几天我越来越郁闷,现在程序猿很火----尤其javaEE成员.但是我感觉在火也是只能给人打工的程序猿. 原因 javaweb的项目都很大,没听过那个码农能单独接到什么项目.只能被人剥削. 有人不信,我来分析一下 C/C++: 都说c/c++落伍了 TMD ,也不看看现在 C/C++ 不去打工能活不,TMD ,C/C++ 随便写个小弄下就可以挂AD,实在不行可以玩反编译.TMD 不用打工,照样可以养家. PHP : mysql + PHP  随便写个小程序,实在不行,开源的cms项目太多了,自己