电音之王 对64bit int 取模
链接: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 取模相关推荐
- 牛客国庆集训派对Day5 B 电音之王(CCPC_CAMP) 黑科技-蒙哥马利快速乘
电音之王 dls专卡 Θ ( 1 ) \Theta(1) Θ(1)快速乘,orzzzzz,我只想说,dls牛逼! 题解:蒙哥马利 代码 #include <bits/stdc++.h> u ...
- 牛客国庆集训day5 B 电音之王 (大数乘模)
链接:https://www.nowcoder.com/acm/contest/205/B 来源:牛客网 题目描述 终于活成了自己讨厌的样子. 听说多听电音能加快程序运行的速度. 定义一个数列,告诉你 ...
- 牛客国庆集训派对Day5 B 电音之王
题目:点击打开链接 题意:略. 分析:首先用暴力快速乘O(n*logn)t了,取模一个long long范围内的数太耗时了,但是一直不知道怎么优化取模,后来才知道有蒙哥马利算法优化a*b%c,蒙哥马利 ...
- 【wanaflyCamp】电音之王
代码: 学会了新姿势,以前只会 longn l o n g n longn的快速乘,无限T-后来想起我原来很久以前其实是学过的. #include<iostream> #include&l ...
- 牛客国庆集训派对Day5B电音之王(Montgomery modular multiplication)
Montgomery modular multiplication 代码出处min_25 杜教暑期时候讲过(我不懂但是我会贴代码呀.jpg),正好牛客网放了camp的题目,那就mark一下 优秀的卡常 ...
- CCPC-Wannafly Camp #4 电音之王 【O(1)快速乘法】
板子题 知道这个板子就可以很容易暴力了 #include <bits/stdc++.h> #define cl(a) memset(a,0,sizeof(a)) using namespa ...
- error: invalid operands to binary % (have ‘double‘ and ‘int‘)取模mod %
此处出现错误: 因为%不可以用于浮点型(double,float类型),只能用于整型(int类型) 可以强制类型转换,将浮点型强制转换为整型,解决此问题 double b = (int) floor( ...
- FL Studio做电音非常棒,那么其他呢?
在一些人眼里,FL Studio只不过是一个搞电音的,除了电音强点,别的都不怎么样.真的是这样吗?在这里,为了以后不再让别的编曲爱好者懵逼双眼,这里可以负责任的跟大家将,水果编曲软件除了是编曲届的电音 ...
- 演示多组int,float,double的数与 2,2.0f,2.0d的除法运算和取模运算,如有兴趣,可自行分析对比结果
因为各种基本数据类型所占用的存储空间各不相同,所以在进行各种计算时,有可能存在精度题.计算机的操作要在内存中进行,而内存容量有限:另一方面,持久化存储设备的存储空间也有限,内存中的数据可能需要持久化保 ...
最新文章
- SQLserver安全设置攻略
- eclipse去掉javascript校验
- java基础---IO转换流
- 【kibana】状态异常 Status: Red Status changed from red to yellow - No existing Kibana index found
- Linux cc 和 gcc 的区别概括介绍
- LeetCode33. 搜索旋转排序数组(二分查找)
- iOS10 拍照崩溃问题
- am335x sd卡启动系统参数设置
- 下载Googleearth地图作为底图显示曝光点
- python 菜鸟教程 xml-【读书】Django教程(菜鸟教程)
- IPv4过渡到IPv6的方案选择
- 计算机组装与维护毕业论文范文,计算机应用毕业论文 计算机组装与维护
- 一起聊一聊数字化,信息化,数据化,数字化转型(建议收藏)
- 为什么都建议程序员不要做“外包”?看完这些经历,很辛酸
- 仓储控制系统(WCS)设计
- OpenCV利用滑动条实现一个开关
- 光猫 高级NAT配置
- 计算机网络系统拓扑图
- c语言程序设计 张曙光,第6章C语言程序设计(张曙光)教材各章习题解答.doc
- ECharts社区里面的gallery在哪里?ECharts gallery新地址
热门文章
- Splash 渲染引擎简介
- Python网络编程(OSI模型、网络协议、TCP)
- 多文件的Makefile
- 爬取虎扑NBA首页主干道推荐贴的一只小爬虫,日常爬不冷笑话解闷
- OC学习7——类别、扩展和协议
- 一次绕过360+诺顿的提权过程
- php怎么根据接口文档实现功能,CodeIgniter+swagger实现 PHP API接口文档自动生成功能...
- linux lpte_linux常用命令
- 光环大数据spark文档_推荐大数据Spark必读书目
- linux可以ping通,Linux可以Ping通但不能traceroute