Teams UVA - 11609(快速幂板题)

写的话就是排列组合。。。但能化简。。。ΣC(n,i)*C(i,1) 化简为n*2^(n-1) ;

#include <iostream>
#include <cstdio>
#include <sstream>
#include <cstring>
#include <map>
#include <set>
#include <vector>
#include <stack>
#include <queue>
#include <algorithm>
#include <cmath>
#define MOD 1000000007
#define LL long long
#define ULL unsigned long long
#define Pair pair<int, int>
#define mem(a, b) memset(a, b, sizeof(a))
#define _  ios_base::sync_with_stdio(0),cin.tie(0)
//freopen("1.txt", "r", stdin);
using namespace std;
const int maxn = 1000000, INF = 0x7fffffff;
LL down[maxn], up[maxn];

LL qpow(LL a, LL b)
{
    LL res = 1;
    while(b)
    {
        if(b & 1) res = res * a % MOD;
        a = a * a % MOD;
        b >>= 1;
    }
    return res;
}
//
//void init()
//{
//    up[0] = 1;
//    down[0] = 1;
//    for(int i=1; i<maxn; i++)
//    {
//        up[i] = up[i-1] * i % MOD;
//        down[i] = qpow(up[i], MOD - 2);
//    }
//}
//
//LL C(LL n, LL m)
//{
//    return up[n] * down[m] % MOD * down[n-m] % MOD;
//}

int main()
{
    int T, kase = 0;
  //  init();
    cin>> T;
    while(T--)
    {
        LL n, res = 0, m;
        cin>> n;

        printf("Case #%d: %lld\n",++kase, n * qpow(2, n-1) % MOD);

   //     cout<< C(n, m) <<endl;

    }

    return 0;
}

原文地址:https://www.cnblogs.com/WTSRUVF/p/9319855.html

时间: 2024-10-08 22:44:45

Teams UVA - 11609(快速幂板题)的相关文章

UVa 10006 快速幂运算

知识补充: 如果a和b关于m同于,那么(a - b )是m的整数倍. 负数取余运算:不同的语言有不同的方法,其中C和JAVA是按第一个数的符号确定结果的符号,C++则要依据系统而定. 取余运算的发展: 1.(a+b)%p=(a%p+b%p)%p 2.(a?b)%p=(a%p?b%p)%p 3.(a?b)%p=(a%p?b%p)%p 4.(ab)%p=((a%p)b)%p 费马定理:对于一个不能被p整除的数a: ap≡a mod p ap?1≡1 mod p 快速幂算法(求xn%mod): 有两种

矩阵快速幂刷题系列

来源自http://blog.csdn.net/chenguolinblog/article/details/10309423 hdu 1575 Tr A Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5587    Accepted Submission(s): 4200 Problem Description A为一个方阵,则Tr

hdu 1575 求一个矩阵的k次幂 再求迹 (矩阵快速幂模板题)

Problem DescriptionA为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973. Input数据的第一行是一个T,表示有T组数据.每组数据的第一行有n(2 <= n <= 10)和k(2 <= k < 10^9)两个数据.接下来有n行,每行有n个数据,每个数据的范围是[0,9],表示方阵A的内容. Output对应每组数据,输出Tr(A^k)%9973. Sample Input22 21 00 13 999999991 2 34

CodeForces 450B (矩阵快速幂模板题+负数取模)

题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=51919 题目大意:斐波那契数列推导.给定前f1,f2,推出指定第N项.注意负数取模的方式:-1%(10^9+7)=10^9+6. 解题思路: 首先解出快速幂矩阵.以f3为例. [f2]  * [1 -1] = [f2-f1]=[f3]  (幂1次) [f1]  * [1  0]     [f2]      [f2] 于是fn=[f2] *[1 -1]^(n-2)

人生第一个快速幂的题(HDU - 1097--A hard puzzle )

题意: 最简单的快速幂.给你两个数n和m,求n^m的最后一位: 解题思路: 额,快速幂就很简单了,这里只要最后一位可以一对每次运算都%10: 代码: #include<cstdio> #include<cstring> #include<algorithm> #include <iostream> using namespace std; #define N 100000 long long n,m; long long pow_(long long n,l

POJ_Fibonacci POJ_3070(矩阵快速幂入门题,附上自己写的矩阵模板)

Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10521   Accepted: 7477 Description In the Fibonacci integer sequence, F0 = 0, F1 = 1, and Fn = Fn − 1 + Fn − 2 for n ≥ 2. For example, the first ten terms of the Fibonacci sequenc

hdu 2604 矩阵快速幂模板题

/* 矩阵快速幂: 第n个人如果是m,有f(n-1)种合法结果 第n个人如果是f,对于第n-1和n-2个人有四种ff,fm,mf,mm其中合法的只有fm和mm 对于ffm第n-3个人只能是m那么有f(n-4)种 对于fmm那么对于第n-3个人没有限制有f(n-3)种 顾f(n)=f(n-1)+f(n-3)+f(n-4); 求出前四个结果分别是 a[1]=2;a[2]=4;a[3]=6;a[4]=9; A=|a[4],a[3],a[2],a[1]| 可以构造矩阵 |1 1 0 0 | B= |0

POJ 3641 素数打表+快速幂 简单题

给出2个数,p和a,2<p<=1e9,1<a<p 若p满足下面2个条件,输出yes,否则输出no 1.p不是素数 2.有a^p=a(mod p) 先判断第一个条件: 本来想用一个数组is_prime[i]表示i是不是素数的,明显,这里p太大,数组开不下 若p不是素数的话, 则p必有p=b*c,其中b<=c, 则(sqrt(p))^2=b*c,则b<=sqrt(p)<=10^4.5<10^5 所以若在10^5内存在数b满足b<p&&p%b

UVa 11582 (快速幂取模) Colossal Fibonacci Numbers!

题意: 斐波那契数列f(0) = 0, f(1) = 1, f(n+2) = f(n+1) + f(n) (n ≥ 0) 输入a.b.n,求f(ab)%n 分析: 构造一个新数列F(i) = f(i) % n,则所求为F(ab) 如果新数列中相邻两项重复出现的话,则根据递推关系这个数列是循环的. 相邻两项所有可能组合最多就n2中,所以根据抽屉原理得到这个数列一定是循环的. 求出数列的周期,然后快速幂取模即可. 1 #include <cstdio> 2 #include <iostrea