ZOJ4108,打表找規律

2021-09-25 21:50:07 字數 1398 閱讀 8049

題意:給你經典的fibonacci 數列,給你左右區間,區間和為奇輸出1,為偶數輸出0;

資料範圍為10的10000次方。

首先說複雜度很高,這種題就打表找規律。

其次資料範圍過大,開long long也不夠,可以考慮用字元陣列來解決。存每一位數,求出區間和。

技巧:對於大數計算,我們可以加每一位再然後%3;

比如123456=(1+2+3+4+5+6)%3;

打表找規律會發現兩個奇數,乙個偶數。

考慮所有偶數的情況:

奇奇偶 奇奇偶 奇奇偶 奇奇偶

3個為迴圈節,根據這個找出偶數的規律。

(區間長度+1)%3= =0的話,肯定為偶數

(區間長度+1)%3= =1的話,如果左區間%3==0,為偶數

(區間長度+1) %3= =2的話,如果左區間%3= =1,為偶數

迴圈節完畢,其餘全是奇數情況。

f1=1 ,f2=1,f3=2,f4=3,f5=5,f6=8,f7=13,f8=21,f9=34,f10=55;…

612

1314

15123456

12345678987654321

12320190427201904272019042720190427

sample output00

1001

#include

#include

#include

#include

using namespace std;

const

int maxn=

3e5+10;

char c1[maxn]

;char c2[maxn]

;int cnt1[maxn]

;//把字元轉換數字,放在陣列;

int cnt2[maxn]

;int

main()

for(

int i=

0;i) sum1=sum1%3;

sum2=sum2%3;

int ans;

//記錄答案if(

(sum2-sum1+1)

%3==0

) ans=0;

elseif(

(sum2-sum1+1)

%3==1

&&sum1%3==

0)ans=0;

elseif(

(sum2-sum1+1)

%3==2

&&sum1%3==

1)ans=0;

else ans=1;

printf

("%d\n"

,ans);}

return0;

}

打表找規律

題解 此題資料規模較大,如果運用直接暴力方法顯然不可行。對於公式 f n a f n 1 b f n 2 後者只有7 7 49 種可能,為什麼這麼說,因為對於f n 1 或者 f n 2 的取值只有 0,1,2,3,4,5,6 這7個數,a,b又是固定的,所以就只有49種可能值了。由該關係式得知每一...

A Funny Game 打表 找規律

n枚硬幣排成乙個圈。alice和bob輪流從中取一枚或兩枚硬幣。不過,取兩枚時,所取的兩枚硬幣必須是連續的。硬幣取走之後留下空格,相隔空格的硬幣視為不連續。alice開始先取,取走最後一枚硬幣的獲勝。當雙方都採取最有策略時,誰會獲勝?不管,先爆搜找規律。includeusing namespace ...

CH Position 數列 打表找規律 貪心

總時限10s 記憶體限制 256mb 出題人sliverriver 提交情況 2 7 題目描述 棟棟非常喜歡數列.數列中有n個數且兩兩不同,並且該數列中所有的數都屬於 0,n 那這個數列即為極好數列。對於每兩個極好數列a,b都有契合度,契合度的計算公式如下.契合度 a0 xor b0 a1 xor ...