列舉 字首和

2021-07-15 02:14:15 字數 927 閱讀 3438

給乙個3*1e5的數字串,判斷該串中有多少個子串%64==0,0也算,有前導0的不算

例如 64064

[64]064

64[0]64

640[64]

[640]64

[64064]

括號內即為符合條件的子串,064不符合

這題要利用1000000正好整除64,所以x*1000000+p(p的長度小於等於6)

只要p正好整除64,則整個串都整除64

所以 列舉串i: 1—len

暴力列舉j=i—i+5找i以及i的後5位,如果當前的數字num[i–j]整除64那麼更新答案。

如果當前的s[i]為0,且 j ! = i,則只更新num不更新答案,因為此時有前導0

當迴圈判斷完6位後,如果num%64==0,說明它可以與i-1前面的數字構成x*1000000+num,如果(i-1)—1有連續的0則剔除(避免前導0),這部分用字首和處理…

bb了那麼多感覺還是沒說清楚=_=說到底還是自己太弱了啊啊啊啊

這題要點:1000000%64==0使得這題可以使用6*n的暴力列舉…

/*hust 1599*/

#include

using

namespace

std;

typedef

long

long ll;

char s[300009];

int sum[300009];

int main()

int ans=0;

for(int i=1;i<=len;i++)

if(j==6&&num%64==0)

ans+=sum[i-1];

}printf("%d\n",ans);

}return

0;}

列舉 優化(7) 字首和1

例1 給定乙個長度為n的陣列 a1,a2,an。n 100000,1 a i 100000 然後有m個詢問,每次詢問給兩個整數l,r問a l a r 的和是多少。m 100000 這道題最直接的做法就是每次詢問的時候,用乙個迴圈累加a l a r 的和,偽 如下 ask l,r sum 0 for ...

C 遞增三元組(列舉 字首和)

給定三個整數陣列 a a1,a2,an b b1,b2,bn c c1,c2,cn 請你統計有多少個三元組 i,j,k 滿足 1 i,j,k n ai本題的關鍵在於發現每個遞增三元組中a i 和c k 都要受b j 約束,故應該通過列舉b j 計算三元組的個數。同時本題的易錯點是統計各個值出現次數的...

字首和演算法 一維字首和 二維字首和

輸入乙個長度為n的整數序列。接下來再輸入m個詢問,每個詢問輸入一對l,r。對於每個詢問,輸出原序列中從第l個數到第r個數的和。輸入格式 第一行包含兩個整數n和m。第二行包含n個整數,表示整數數列。接下來m行,每行包含兩個整數l和r,表示乙個詢問的區間範圍。輸出格式 共m行,每行輸出乙個詢問的結果。資...