• HDU 6462.人类史上最大最好的希望事件-递推 (“字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛)


    人类史上最大最好的希望事件

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
    Total Submission(s): 1198    Accepted Submission(s): 337


    Problem Description
    作为CNCS的半壁江山,狗哥常常在宇宙中心邵阳眺望黄浦江,夜晚的星空总是迷人,有时候还能见到彗星滑落。

    狗哥是幸运的,他在两秒钟内看到了十七颗彗星划过天际,作为打ACM的学者,自然不会有「稳定-1」情况。他开始研究彗星运动的轨迹,发现他们都遵照斐波那契螺旋线在运动着。

    尤里卡!狗哥觉得这就是找寻「生命,宇宙和一切的终极答案」的精要所在,但是怎么表示呢?狗哥觉得求取斐波那契螺旋线经过的一个个方格的面积之和就是公式的表现。

    例如下图,螺旋线每划过一个方格,都转过了四分之一圈。如果我们以四分之一圈为单位,那么我们用类似带分数的形式表示螺旋线转动的起点和终点。例如,0+0 到 0 + 1 意即从第一个方格转到第二个方格,划过了前两个方格,他们的面积之和为2(1+1)。同理,0+0 到 1+0 划过了前五个方格,他们的面积之和为40(1+1+4+9+25)。



    但是聪明的狗哥需要一个程序去获得指定范围内的螺旋线面积之和,狗哥给了你一首「希望之花」的时间,而他需要利用这个时间去打出四暗刻单骑。如果你能完成这个程序,狗哥会封你为格拉摩根伯爵
     
    Input
    不定组数据。

    首先输入一个整数Q,代表狗哥询问次数。

    接下来Q行,每行四个整数a,b,c,d,代表狗哥想求 a+b 到 c+d 之间的螺旋线面积之和。

    1<= Q <= 10000

    0<= a,c <= 10000

    0 <= b,d <= 3

    结果对192600817取模。
     
    Output
    一个数字,表示螺旋线面积之和。
     
    Sample Input
    4 0 0 0 1 0 0 1 0 1 2 2 1 1 1 0 3 4 0 0 0 1 0 0 1 0 1 2 2 1 1 1 0 3
     
    Sample Output
    2 40 4791 98 2 40 4791 98
     
     
    题意就是a,b,a代表一个完整的圆,就是斐波那契的运算。题意看了大半年,发现读错了。
     
    代码:
     1 //6462
     2 #include<bits/stdc++.h>
     3 using namespace std;
     4 typedef long long ll;
     5 const int maxn=1e5+10;
     6 const int mod=192600817;
     7 
     8 ll ff[maxn];
     9 ll pre[maxn];
    10 
    11 int main()
    12 {
    13     ff[0]=1;
    14     ff[1]=1;
    15     for(int i=2;i<maxn;i++)
    16         ff[i]=(ff[i-1]+ff[i-2])%mod;
    17     pre[0]=ff[0]*ff[0];
    18     for(int i=1;i<maxn;i++)
    19         pre[i]=(pre[i-1]+ff[i]*ff[i]%mod)%mod;
    20 //     cout<<pre[maxn-1]<<endl;
    21 //    cout<<pre[-1]<<endl;
    22     int t;
    23     while(~scanf("%d",&t)){
    24         while(t--){
    25             int a,b,c,d;
    26             scanf("%d%d%d%d",&a,&b,&c,&d);
    27             int x1=a*4+b,x2=c*4+d;
    28             if(x1>x2) swap(x1,x2);
    29             cout<<(pre[x2]-pre[x1-1]+mod)%mod<<endl;
    30         }
    31     }
    32 }
  • 相关阅读:
    如何实现浏览器内多个标签页之间的通信?
    vue组件库的基本开发步骤(源代码)
    vue组件库的基本开发步骤
    Websocket原理
    TCP和UDP的区别
    一句话概括 tcp三次握手
    简单说一下你对http和https的理解
    .Ajax(async异步与sync同步)
    get和post请求方式的区别
    面试易忽略状态码
  • 原文地址:https://www.cnblogs.com/ZERO-/p/10580593.html
Copyright © 2020-2023  润新知