链接:https://www.nowcoder.com/acm/contest/205/B
来源:牛客网

电音之王

时间限制:C/C++ 2秒,其他语言4秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

终于活成了自己讨厌的样子。
听说多听电音能加快程序运行的速度。
定义一个数列,告诉你a0,a1,m0,m1,c,定义an=m0an-1+m1an-2+c对所有n≥ 2。

输入描述:

第一行一个整数T(1≤ T≤ 1000),表示数据组数。
每组数据一行7个整数a0,a1,m0,m1,c,M,k,保证1≤ M≤ 1018,0≤ a0,a1,m0,m1,c< M, 2≤ k≤ 106,保证M为奇数。
保证。

输出描述:

对于每组数据,输出一行表示答案。

示例1

输入

复制

1
1 1 1 1 0 1000000007 10

输出

复制

904493530
#include <stdio.h>
#include<vector>
#include<utility>
#include <assert.h>
using namespace std;
#define rep(i,a,n) for (int i=a;i<n;i++)
#define per(i,a,n) for (int i=n-1;i>=a;i--)
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define SZ(x) ((int)(x).size())
typedef vector<int> VI;
typedef long long ll;
typedef pair<int,int> PII;
const ll mod=1000000007;ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;}
// headtypedef unsigned long long u64;
typedef __int128_t i128;
typedef __uint128_t u128;
int _,k;
u64 A0,A1,M0,M1,C,M;struct Mod64 {Mod64():n_(0) {}Mod64(u64 n):n_(init(n)) {}static u64 init(u64 w) { return reduce(u128(w) * r2); }static void set_mod(u64 m) {mod=m; assert(mod&1);inv=m; rep(i,0,5) inv*=2-inv*m;r2=-u128(m)%m;}static u64 reduce(u128 x) {u64 y=u64(x>>64)-u64((u128(u64(x)*inv)*mod)>>64);return ll(y)<0?y+mod:y;}Mod64& operator += (Mod64 rhs) { n_+=rhs.n_-mod; if (ll(n_)<0) n_+=mod; return *this; }Mod64 operator + (Mod64 rhs) const { return Mod64(*this)+=rhs; }Mod64& operator -= (Mod64 rhs) { n_-=rhs.n_; if (ll(n_)<0) n_+=mod; return *this; }Mod64 operator - (Mod64 rhs) const { return Mod64(*this)-=rhs; }Mod64& operator *= (Mod64 rhs) { n_=reduce(u128(n_)*rhs.n_); return *this; }Mod64 operator * (Mod64 rhs) const { return Mod64(*this)*=rhs; }u64 get() const { return reduce(n_); }static u64 mod,inv,r2;u64 n_;
};
u64 Mod64::mod,Mod64::inv,Mod64::r2;int main() {for (scanf("%d",&_);_;_--) {scanf("%llu%llu%llu%llu%llu%llu%d",&A0,&A1,&M0,&M1,&C,&M,&k);Mod64::set_mod(M);Mod64 a0(A0),a1(A1),m0(M0),m1(M1),c(C),ans(1),a2(0);for (int i=0;i<=k;i++) {ans=ans*a0;a2=m0*a1+m1*a0+c;a0=a1; a1=a2;}printf("%llu\n",ans.get());}
}

电音之王 对64bit int 取模相关推荐

  1. 牛客国庆集训派对Day5 B 电音之王(CCPC_CAMP) 黑科技-蒙哥马利快速乘

    电音之王 dls专卡 Θ ( 1 ) \Theta(1) Θ(1)快速乘,orzzzzz,我只想说,dls牛逼! 题解:蒙哥马利 代码 #include <bits/stdc++.h> u ...

  2. 牛客国庆集训day5 B 电音之王 (大数乘模)

    链接:https://www.nowcoder.com/acm/contest/205/B 来源:牛客网 题目描述 终于活成了自己讨厌的样子. 听说多听电音能加快程序运行的速度. 定义一个数列,告诉你 ...

  3. 牛客国庆集训派对Day5 B 电音之王

    题目:点击打开链接 题意:略. 分析:首先用暴力快速乘O(n*logn)t了,取模一个long long范围内的数太耗时了,但是一直不知道怎么优化取模,后来才知道有蒙哥马利算法优化a*b%c,蒙哥马利 ...

  4. 【wanaflyCamp】电音之王

    代码: 学会了新姿势,以前只会 longn l o n g n longn的快速乘,无限T-后来想起我原来很久以前其实是学过的. #include<iostream> #include&l ...

  5. 牛客国庆集训派对Day5B电音之王(Montgomery modular multiplication)

    Montgomery modular multiplication 代码出处min_25 杜教暑期时候讲过(我不懂但是我会贴代码呀.jpg),正好牛客网放了camp的题目,那就mark一下 优秀的卡常 ...

  6. CCPC-Wannafly Camp #4 电音之王 【O(1)快速乘法】

    板子题 知道这个板子就可以很容易暴力了 #include <bits/stdc++.h> #define cl(a) memset(a,0,sizeof(a)) using namespa ...

  7. error: invalid operands to binary % (have ‘double‘ and ‘int‘)取模mod %

    此处出现错误: 因为%不可以用于浮点型(double,float类型),只能用于整型(int类型) 可以强制类型转换,将浮点型强制转换为整型,解决此问题 double b = (int) floor( ...

  8. FL Studio做电音非常棒,那么其他呢?

    在一些人眼里,FL Studio只不过是一个搞电音的,除了电音强点,别的都不怎么样.真的是这样吗?在这里,为了以后不再让别的编曲爱好者懵逼双眼,这里可以负责任的跟大家将,水果编曲软件除了是编曲届的电音 ...

  9. 演示多组int,float,double的数与 2,2.0f,2.0d的除法运算和取模运算,如有兴趣,可自行分析对比结果

    因为各种基本数据类型所占用的存储空间各不相同,所以在进行各种计算时,有可能存在精度题.计算机的操作要在内存中进行,而内存容量有限:另一方面,持久化存储设备的存储空间也有限,内存中的数据可能需要持久化保 ...

最新文章

  1. SQLserver安全设置攻略
  2. eclipse去掉javascript校验
  3. java基础---IO转换流
  4. 【kibana】状态异常 Status: Red Status changed from red to yellow - No existing Kibana index found
  5. Linux cc 和 gcc 的区别概括介绍
  6. LeetCode33. 搜索旋转排序数组(二分查找)
  7. iOS10 拍照崩溃问题
  8. am335x sd卡启动系统参数设置
  9. 下载Googleearth地图作为底图显示曝光点
  10. python 菜鸟教程 xml-【读书】Django教程(菜鸟教程)
  11. IPv4过渡到IPv6的方案选择
  12. 计算机组装与维护毕业论文范文,计算机应用毕业论文 计算机组装与维护
  13. 一起聊一聊数字化,信息化,数据化,数字化转型(建议收藏)
  14. 为什么都建议程序员不要做“外包”?看完这些经历,很辛酸
  15. 仓储控制系统(WCS)设计
  16. OpenCV利用滑动条实现一个开关
  17. 光猫 高级NAT配置
  18. 计算机网络系统拓扑图
  19. c语言程序设计 张曙光,第6章C语言程序设计(张曙光)教材各章习题解答.doc
  20. ECharts社区里面的gallery在哪里?ECharts gallery新地址

热门文章

  1. Splash 渲染引擎简介
  2. Python网络编程(OSI模型、网络协议、TCP)
  3. 多文件的Makefile
  4. 爬取虎扑NBA首页主干道推荐贴的一只小爬虫,日常爬不冷笑话解闷
  5. OC学习7——类别、扩展和协议
  6. 一次绕过360+诺顿的提权过程
  7. php怎么根据接口文档实现功能,CodeIgniter+swagger实现 PHP API接口文档自动生成功能...
  8. linux lpte_linux常用命令
  9. 光环大数据spark文档_推荐大数据Spark必读书目
  10. linux可以ping通,Linux可以Ping通但不能traceroute