zoukankan      html  css  js  c++  java
  • YYH算组合数(NOIP模拟赛Round 6)

    题目描述

    YYH手上有一个长度为N的数列,而且这个数列正好能表示为。现在他想知道这个数列的最大公约数是多少,请你帮帮他

    输入输出格式

    输入格式:

    每个数据点包括多组数据,以EOF结束

    对于每个数据输入一行一个整数,N,为数列的长度

    输出格式:

    对于每个数据输出一行一个整数,为数列的最大公约数

    这道题目就是结论题,因为题目数据太大,所以我们必须O(logN)做出答案。

    我们看出来如果N是一个奇数,那么由于肯定会出现C(n,n)所以最大公因数为1.

    否则如果n是一个偶数,我们很容易得出答案为2*lowbit(n)

    然后就很水啦。

    #include<iostream>
    #include<cstdio>
    using namespace std;
    long long n,ans=1;
    int main(){
        while(~scanf("%lld",&n))
        {
            ans=1;
            n=n*2;
            while(n%2==0){
                n/=2;
                ans*=2;
            }
            printf("%lld
    ",ans);
        }
    }

    记得开longlong哦

  • 相关阅读:
    Chisel3
    Chisel3
    Chisel3
    Chisel3
    Chisel3
    Chisel3
    Chisel3
    Chisel3
    Chisel3
    UVa 12716 (GCD == XOR) GCD XOR
  • 原文地址:https://www.cnblogs.com/ghostfly233/p/6929718.html
Copyright © 2011-2022 走看看