zoukankan      html  css  js  c++  java
  • 偶数

    题目描述

    给定一个正整数n,请输出杨辉三角形前n行的偶数个数对1000003取模后的结果。

    输入输出格式

    输入格式:

    一个数

    输出格式:

    结果

    输入输出样例

    输入样例#1: 
    6
    
    输出样例#1: 
    6
    

    说明

    对于30%的数据,n<=4000

    对于70%的数据,n<=4*10^9

    对于100%的数据,n<=10^15

    杨辉三角形的前七行:

    1

    1 1

    1 2 1

    1 3 3 1

    1 4 6 4 1

    1 5 10 10 5 1

    1 6 15 20 15 6 1

    分析:

    本题数据范围太大了。。。所以不可能用普通做法,接下来,我决定。。。看题解。。。

    根据kkk大佬题解

    “打出杨辉三角形前若干行的奇偶分布情况,便会发现这是一个分形图形。这样就可以用递归解决问题。具体实现时可以直接计算,也可以先算总个数再减去奇数的数量(比较好算)。用扩展欧几里德或欧拉定理来解决除法取模问题,或是直接用高精计算,最后取模。”

    于是,代码就出来了。

    CODE(根据某大佬代码):

     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 long long k,t,n,ans,nx,mi3[1001],d,mod=1000003,a[1001],p;
     5 int main()
     6 {long long i;
     7 //freopen("11.in","r",stdin);
     8     scanf("%lld",&n);
     9     nx=n;
    10      k=0;
    11     d=1;
    12     for (i=1;i<=51;i++)
    13     d*=2;
    14      t=51;
    15     while (n)
    16     {
    17         if (n>=d)
    18         {
    19             n=n-d;
    20             a[++k]=t;    
    21         }
    22         d/=2;
    23         t--;
    24     }
    25     n=nx;
    26     mi3[0]=1;
    27     for (i=1;i<=a[1];++i)
    28      {
    29         mi3[i]=(mi3[i-1]*3)%mod;
    30      }
    31   
    32   for (i=1;i<=k;++i)
    33      ans=(ans+mi3[a[i]]*(long long)(1<<(i-1)))%mod;
    34     //cout<<ans<<endl;
    35     ans%=mod;
    36      p=(((n%mod)*(n%mod+1)))/2;
    37     p%=mod;
    38     if (p<ans)p+=mod;
    39     p=(p-ans)%mod;
    40 printf("%lld
    ",p);
    41 }
  • 相关阅读:
    巴洛克式和哥特式的区别
    推荐阅读书籍,是时候再行动起来了。
    AtCoder ABC 159F Knapsack for All Segments
    AtCoder ABC 159E Dividing Chocolate
    AtCoder ABC 158F Removing Robots
    AtCoder ABC 158E Divisible Substring
    AtCoder ABC 157F Yakiniku Optimization Problem
    AtCoder ABC 157E Simple String Queries
    AtCoder ABC 157D Friend Suggestions
    AtCoder ABC 156F Modularness
  • 原文地址:https://www.cnblogs.com/kanchuang/p/11163102.html
Copyright © 2011-2022 走看看