两个序列(数论)

news/2024/7/15 17:16:49 标签: c++, 算法, 图论

两个序列

Problem:B
Time Limit:1000ms
Memory Limit:65535K

Description

 Gugu 有两个长度无限长的序列A,B
 A0=a^0/0!,A1=a^1/1!,A2=a^2/2!,A3=a^3/3!…. 
 B0=0,  B1=b^1/1!,B2=0,B3=b^3/3!,B4=0, B5=b^5/5! … 
 Douge 看到这道这两个序列很觉得很麻烦,所以他想到一个好点子,他想把这两个序列结合一个序列C
Cn= n! * sigma Ai*B(n-i)  (n-i)>=0 i>=0
当Douge 把C序列写到纸上觉得好多呀!!!所以他只想知道Cn,但是Douge 要去打游戏,所以想寻求你来帮助他

Input

T组数据         (T<=1e5)
给出 a,b,n   0<=a,b,n<=1e9

Output

Cn%1e9+7

Sample Input

1
1 1 1

Sample Output

1

Hint

大约1e5组数据,推荐使用scanf
样例解释:
C1=1!*((A0*B1)+(A1*B0))=1!((1/0! * 1/1!) + (1/1! * 0)) = 1 

思路:

写出来,化简一下是(a+b)^{n}取b为奇数次项

答案为((a+b)^{n}-(a-b)^{n})/2;

代码:

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<utility>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<math.h>
#include<unordered_map>
#include<map>
using namespace std;
typedef long long LL;
typedef unsigned long long ull;
#define per(i,a,b) for(int i=a;i<=b;i++)
#define ber(i,a,b) for(int i=a;i>=b;i--)
const int N = 1e5;
const long long mod = 1e9+7;
const double eps = 1e-2;
int T;
LL a, b, n,ni,ans;
LL quick(LL a, LL b,LL mod)
{
    LL ans = 1;
    while (b)
    {
        if (b & 1)
            ans = ans * a % mod;
        b >>= 1;
        a = a * a % mod;
    }
    return ans;
}
int main()
{
    cin >> T;
    ni = quick(2, mod - 2, mod);
    while (T--)
    {
        ans = 0;
        scanf("%lld%lld%lld", &a, &b, &n);
        ans = (ans + quick(a + b, n, mod)) % mod;
        ans = (ans-quick(a - b, n, mod)) % mod;
        ans = ans * ni % mod;
        printf("%lld\n", (ans%mod+mod)%mod);
    }
    return 0;
}


http://www.niftyadmin.cn/n/5174132.html

相关文章

如何在 Python 中执行 MySQL 结果限制和分页查询

Python MySQL 限制结果 限制结果数量 示例 1: 获取您自己的 Python 服务器 选择 “customers” 表中的前 5 条记录&#xff1a; import mysql.connectormydb mysql.connector.connect(host"localhost",user"您的用户名",password"您的密码"…

针对CSP-J/S的每日一练(5)

一、审题 题目描述 珂朵莉有一个正整数数列 { a n } \{a_n\} {an​}&#xff0c;对于所有的 i ≥ 1 i\geq 1 i≥1&#xff0c; a i 1 a i i 1 a_{i1}a_{i}\times i1 ai1​ai​i1。 现在她定义了一个新的数列 { b n } \{b_n\} {bn​}&#xff0c;对于所有的 i ≥ 1 i\g…

OpenShift 4 - 对 OpenShift 的 etcd 数据库加密

《OpenShift / RHEL / DevSecOps 汇总目录》 说明&#xff1a;本文已经在 OpenShift 4.14 的环境中验证 文章目录 加密 etcd 数据库验证加密的 etcd 数据库解密 etcd 数据库 加密 etcd 数据库 OpenShift 对 etcd 数据库加密时只加密值&#xff0c;而不加密键。而资源类型、命…

基于Matlab+ AlexNet神经网络的动物识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 基于Matlab和AlexNet神经网络的动物识别系统可以用于自然图像识别等场景&#xff0c;以下是一个基本的介绍设计步骤…

QT QSplashScreen

多数大型应用程序启动时都会在程序完全启动前显示一个启动画面&#xff0c;在程序完全启动后消失。程序启动画面可以显示相关产品的一些信息&#xff0c;使用户在等待程序启动的同时了解相关产品的功能&#xff0c;这也是一个宣传的方式。Qt中提供的QSplashScreen 类实现了在程…

同一个Unity项目打开两个Unity Editor实例

特殊情况下&#xff0c;同一个项目需要同时打开两个编辑器做测试&#xff0c;如多人在线游戏&#xff0c;或者有通信功能的时候就有这样的需求。同时也为了方便调试和观察日志。并且修改的是同一份代码。 命令介绍&#xff1a; 实现思路&#xff1a; 使用 mklink 命令 分别创建…

网神下一代极速防火墙任意文件读取漏洞

访问漏洞url&#xff1a; ​​/?gpki_file_download&filename../../../../../etc/passwd漏洞证明&#xff1a; 文笔生疏&#xff0c;措辞浅薄&#xff0c;望各位大佬不吝赐教&#xff0c;万分感谢。 免责声明&#xff1a;由于传播或利用此文所提供的信息、技术或方法而造…

初探SVG

SVG&#xff0c;可缩放矢量图形&#xff08;Scalable Vector Graphics&#xff09;。使用XML格式定义图像。SVG有以下优点&#xff1a;1&#xff09;可被非常多的工具读取和修改&#xff1b;2&#xff09;比JPEG和GIF尺寸更小&#xff0c;可压缩性更强&#xff1b;3&#xff09…