• 洛谷P3414 SAC#1


    P3414 SAC#1 - 组合数

      • 218通过
      • 681提交
    • 题目提供者ProjectWTA
    • 标签
    • 难度普及/提高-
    • 时空限制1s / 128MB

      讨论  题解  

    最新讨论更多讨论

    • 讨论区出bug了
    • 题目错啦
    • 其实是很简单的题

    题目背景

    本题由世界上最蒟蒻最辣鸡最撒比的SOL提供。

    寂月城网站是完美信息教室的官网。地址:http://191.101.11.174/mgzd 。

    题目描述

    辣鸡蒟蒻SOL是一个傻逼,他居然觉得数很萌!

    今天他萌上了组合数。现在他很想知道simga(C(n,i))是多少;其中C是组合数(即C(n,i)表示n个物品无顺序选取i个的方案数),i取从0到n所有偶数。

    由于答案可能很大,请输出答案对6662333的余数。

    输入输出格式

    输入格式:

    输入仅包含一个整数n。

    输出格式:

    输出一个整数,即为答案。

    输入输出样例

    输入样例#1:
    3
    输出样例#1:
    4

    说明

    对于20%的数据,n <= 20;

    对于50%的数据,n <= 1000;

    对于100%的数据,n <= 1 000 000 000 000 000 000 (10^18)

    分析:先上结论:答案为2^(n-1),为什么是这个呢?如果i能取奇数,那么答案为2^n,因为我们从n个数中取0个,取1个,取2个...取n个,相当于取任意多个,每个位置可以取或者不去,那么根据乘法原理,答案就为2^n,如果i只能为偶数,就会有一半的位置取不了,答案就为原答案的1/2.

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    long long n;
    
    const int mod = 6662333;
    typedef long long LL;
    
    LL fun(LL x, LL n)
    {
        LL res = 1;
        while (n > 0)
        {
            if (n & 1)
                res = (res*x) % mod;
            x = (x*x) % mod;
            n >>= 1;
        }
        return res % mod;
    }
    
    int main()
    {
        scanf("%lld", &n);
        printf("%lld
    ",fun(2, n - 1));
    
        return 0;
    }
  • 相关阅读:
    IntPutStream字节输入流
    FileOutPutStream
    FileOutPutStream 一次写多个字节
    OutPutStream
    FileFilter 2
    FileFilter
    Selenium请求过快 解决方法
    Selenium 定位元素的方法
    Selenium自动化环境安装
    Appium定位元素方法
  • 原文地址:https://www.cnblogs.com/zbtrs/p/7284398.html
Copyright © 2020-2023  润新知