B题(数学题:

  问(1+sqrt(2)) ^n  能否分解成 sqrt(m) +sqrt(m-1)的形式 
如果可以 输出 m%1e9+7 否则 输出no  n<=1e18
  刚看题没思路 暴力一下吧 发现根本没有no的情况 那么就好办多了
所求的值序列为 1, 2, 9, 50, 289, 1682, 9801, 57122, 332929, 1940450, 11309769
设(1+sqrt(2)) ^n为 A_n+B_n*sqrt(2) ,则:
  A_n = A_(n-1)+2*B_(n-1)
  A_n = A_(n-1)+B_(n-1)
  那么所求值序列显然为A_n*A_n+(n&1)
我们需要求这个A_n 暴力肯定不行,看到上面的递推式可以想到矩阵快速幂---
这个矩阵构造也非常简单
/*
1 2      A_n    A_(n+1)
   *       =
1 1    B_n    B_(n+1)
*/
然后注意下细节
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <vector>
#include <cstring>
#include <set>
#include <map>
using namespace std;
typedef long long ll;
inline void r(ll&num){
num=;ll f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<='')num=num*+ch-'',ch=getchar();
num*=f;
}
inline void r(int &num){
num=;int f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<='')num=num*+ch-'',ch=getchar();
num*=f;
}
const long long N = ;
const long long M = 1e9+;
struct Matr
{
long long line;
long long a[N+][N+];
Matr(){
line=;
a[][] = ; a[][] = ;
a[][] = ; a[][] = ;
}
};
Matr isit(Matr x,long long c) //矩阵初始化
{
for(long long i=;i<N;i++)
for(long long j=;j<N;j++)
x.a[i][j]=c;
return x;
} Matr Matlab(Matr x,Matr s) //矩阵乘法
{
Matr ans;
ans.line = x.line;
ans=isit(ans,);
for(long long i=;i<x.line;i++)
{
for(long long j=;j<x.line;j++)
{
for(long long k=;k<s.line;k++)
{
ans.a[i][j] = (ans.a[i][j]+x.a[i][k]*s.a[k][j])%M;
ans.a[i][j]=(ans.a[i][j]+M)%M;
}
}
}
return ans;
}
long long Fast_Matrix(Matr tmp,long long n)
{
if(n==)
return ;
if(n==)
return ;
if(n==)
return ;
n--;
Matr ans,ch;
ans.line = ;
ans.a[][] = ;
ans.a[][] = ;
ans.a[][] = ;
ans.a[][] = ;
while(n>)
{
if(n%)
{
ans=Matlab(ans,tmp);
}
tmp=Matlab(tmp,tmp);
n/=;
}
return (ans.a[][]+ans.a[][])%M;
}
int main()
{
Matr T;
long long n;
cin>>n;
long long x = Fast_Matrix(T,n);
cout<<(x*x+(n&))%M<<endl;
return ;
}

AC代码

 

51nod 算法马拉松17 解题报告 以后不能赛中写题解(查逐梦者抄袭本人代码...的更多相关文章

  1. 51NOD 算法马拉松8

    题目戳这里:51NOD算法马拉松8 某天晚上kpm在玩OSU!之余让我看一下B题...然后我就被坑进了51Nod... A.还是01串 水题..怎么乱写应该都可以.记个前缀和然后枚举就行了.时间复杂度 ...

  2. 51nod 算法马拉松 34 Problem D 区间求和2 (FFT加速卷积)

    题目链接  51nod 算法马拉松 34  Problem D 在这个题中$2$这个质数比较特殊,所以我们先特判$2$的情况,然后仅考虑大于等于$3$的奇数即可. 首先考虑任意一个点对$(i, j)$ ...

  3. 随便玩玩系列之一:SPOJ-RNG+51nod 算法马拉松17F+51nod 1034 骨牌覆盖v3

    先说说前面的SPOJ-RNG吧,题意就是给n个数,x1,x2,...,xn 每次可以生成[-x1,x1]范围的浮点数,把n次这种操作生成的数之和加起来,为s,求s在[A,B]内的概率 连续形的概率 假 ...

  4. 51Nod 算法马拉松21(迎新年)

    这次打算法马拉松是在星期五的晚上,发挥还算正常(废话,剩下的题都不会= =). 讲讲比赛经过吧. 8:00准时发题,拿到之后第一时间开始读. A配对,看上去像是二分图最大权匹配,一看范围吓傻了,先跳过 ...

  5. 51Nod 算法马拉松15 记一次悲壮而又开心的骗分比赛

    OwO 故事的起源大概是zcg前天发现51Nod晚上有场马拉松,然后他就很开心的过去打了 神奇的故事就开始了: 晚上的时候我当时貌似正在写线段树?然后看见zcg一脸激动告诉我第一题有九个点直接输出B就 ...

  6. 51Nod 算法马拉松23 开黑记

    惨啊……虽然开了半天黑,但是还是被dalao们踩了…… 第二次开黑,还是被卡在rank20了,我好菜啊……= = 写一写比赛经过吧…… 看到题之后习惯性都打开,A~D看上去似乎并没有什么思路,F应该是 ...

  7. 51Nod 算法马拉松22 开黑记

    这是一场惨烈的开黑大战,始于全机房开黑指望刷进rank前十拿钱的壮志,终于被各路神犇怒踩成rank20,差点200点头盾不保的落魄,想起将近一年前ad和zcg等学长挤进rank10的壮举,不由得唏嘘, ...

  8. 51nod算法马拉松 contest7

    A题 链接:http://www.51nod.com/contest/problem.html#!problemId=1417 推荐链接:http://blog.csdn.net/a837199685 ...

  9. 51Nod 1600 Simple KMP 解题报告

    51Nod 1600 Simple KMP 对于一个字符串\(|S|\),我们定义\(fail[i]\),表示最大的\(x\)使得\(S[1..x]=S[i-x+1..i]\),满足\((x<i ...

随机推荐

  1. 3、webpack打包出的文件解析

    分析打包后的结果,看看打包后的结果是什么东西 把打包后的结果.注释什么的删删‘’ 当前是一个匿名函数. 默认的时候会执行,执行的时候会传一个对象,对象有几部分,第一部分是我们的key.第二部分是我们的 ...

  2. dom4j的解析实例

    book.xml数据如下: <books> <book> <author>Thomas</author> <title>Java从入门到放弃 ...

  3. UVaLive 3983 Robotruck (DP + 单调队列)

    题意:有n个垃圾,第i个垃圾坐标为(xi,yi),重量为wi,有一个机器人,要按照编号从小到大的顺序剑气所有的垃圾兵扔进垃圾桶,垃圾桶在原点, 每次总重量不能超过C,两点间距离为曼哈顿距离,求出最短的 ...

  4. SCUTOJ - 362 - CC的族谱 - 树上倍增

    https://scut.online/p/362 和LCA差不多,注意开大点不怕浪费. #include<bits/stdc++.h> using namespace std; type ...

  5. win10+PHP 安装memcache

    1.给php环境安装memcache扩展 2.给电脑安装memcache环境 一.为win10安装memcache服务 下载对应的版本 32位系统 1.4.5版本:http://static.runo ...

  6. windows7激活及office2013激活

    步骤 1.安装KMSpico 密码:dzit 2.安装.NET Framework 4 密码:vnus 3.解压KMSpico,运行文件,等待语音结束即可激活windows7及office2013 注 ...

  7. Lightoj1003【判环操作】

    题意: 对于n个给出字符串a,b,理解成a在b之前办好这个事情,要求n个给出两个串,a都要在b之前完成: 题意: 所以一旦出现环就不行了: 以前在写最短路的时候,spfa就有一个判环,后来写着写着写到 ...

  8. Codeforces712C【贪心】

    看了这篇.. http://blog.csdn.net/queuelovestack/article/details/52503162 直接就是从小到大,那么每次按最大的递增顺序上去,就是了. 因为每 ...

  9. bzoj 2597: [Wc2007]剪刀石头布【最小费用最大流】

    脑子不太清楚一个zz问题调了好久-- 首先正难则反,因为三元环好像没什么特点,就考虑让非三元环个数最小 考虑非三元环特点,就是环上一定有一个点的入度为2,联系整张图,三元环个数就是每个点C(入度,2) ...

  10. IT兄弟连 JavaWeb教程 JSP语法

    在JSP页面中,脚本标识使用的最为频繁,因为他们能够方便.灵活地生成页面中的动态内容,特别是JSP程序代码块.JSP中的脚本标识包括3部分,即JSP声明区.JSP表达式和JSP程序代码块.通过这些标识 ...