交互网站 百度,wordpress cnki,全总基层组织建设网站,工厂管理软件题意#xff1a;给定你一个数串s#xff0c;再给你一个 a #xff0c;问你在矩阵d(第i#xff0c;j个元素为si*sj)有多少个小矩形的和为a 解题思路#xff1a;可知 a #xff08;s[x] s[x1] ....s[y]#xff09;* (s[p]s[p1]....s[q]); 我们只需要枚举各字串的和…题意给定你一个数串s再给你一个 a 问你在矩阵d(第ij个元素为si*sj)有多少个小矩形的和为a 解题思路可知 a s[x] s[x1] ....s[y]* (s[p]s[p1]....s[q]); 我们只需要枚举各字串的和以及其个数就可以得到所求小矩形的个数 解题代码 1 #include stdio.h2 #include string.h3 char a[4005];4 __int64 b[4005];5 __int64 hs[40005];6 __int64 sum[4005];7 int main()8 {9 __int64 k ;
10 scanf(%I64d,k);
11 scanf(%s,a);
12 memset(hs,0,sizeof(hs));
13 __int64 len strlen(a);
14 for(__int64 i 0 ;i len ;i )
15 {
16 b[i1] a[i] - 0;
17 }
18 sum[0] 0 ;
19 sum[1] b[1];
20 for(__int64 i 1;i len;i )
21 sum[i] sum[i-1] b[i];
22
23 for(__int64 i 0;i len;i )
24 for(__int64 j i1; j len ; j )
25 {
26 hs[sum[j] - sum[i]] ;
27 }
28
29 // printf(%I64d %I64d\n,hs[0],hs[1]);
30 __int64 ans 0 ;
31 if(k ! 0 ){
32 for(__int64 i 1;i 40000;i )
33 {
34 if(k % i 0 (k / i) 40000)
35 ans hs[i] * hs[k/i];
36 }
37 }
38 else
39 {
40 ans hs[0] *hs[0];
41 for(int i 1 ;i 40000;i )
42 ans hs[i]*hs[0]*2;
43
44 }
45 printf(%I64d\n,ans);
46 return 0;
47 } View Code 转载于:https://www.cnblogs.com/zyue/p/3434319.html