給乙個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行,每行輸出乙個詢問的結果。資...