2018-04-15 21:22
腾讯_WXG_客户端开发 0 点赞 评论 收藏
分享
2018-04-08 20:07
腾讯_WXG_客户端开发 riverding:#include <iostream> using namespace std; int main() { int i,n; int count=0; int a=2; int b=3; while (cin>>n) { for(i=4;i<=n;i++){ if(i<a+b){ count++; } else{ a=b; b=i; } } cout<<count<<endl; count=0; a=2; b=3; } return 0; }
投递链家等公司10个岗位 >
0 点赞 评论 收藏
分享
2018-04-06 21:43
腾讯_WXG_客户端开发 小小菜鸟cfj:玫瑰花题目虽然有重复,应该可以利用容斥原理计算(去除重复元素): 例1: n= 3 k =2 结果为6 解释:(2^3) - C21 (1^3) = 14 k中颜色全排列 - 选出k-1中颜色全排列 例2: n= 4 k =3 结果为 36 解释: (3^4) - C3 2 (2^4) + C31 (1^4) = 36 k中颜色全排列 - 选出k-1种颜色全排列 + 选出k-2中颜色全排列 // n! int n_1(int n) { if(n ==0) return 1; int temp =1; for(int i=n;i>=1;i--) temp = temp * i % mod ; return temp; } // k^n int k_n(int k,int n) { int temp = 1; while(n>=1) { temp = temp*k% mod ; n--; } return temp; } int main() { int n,k; while(cin >> n >>k) { int sign = 1, result =0; if(n < k) cout << 0 << endl; else for(int i=k;i>0;i--,sign*=-1) //C(下标n,上标k) = n! / ((n-k)! * k!) result += sign * k_n(i,n) * n_1(k) / (n_1(i) * n_1(k -i)); cout << result << endl; } return 0; }
投递360集团等公司10个岗位 >
0 点赞 评论 收藏
分享
2018-03-23 11:37
腾讯_WXG_客户端开发 flybeyond:说一下对楼主思路的理解主要有三点: 弄清楚T中的每一个字符会和S中哪些位置的字符比较: 结合楼主的图很容易知道:T[i]会与S[i]~S[i+|S|-|T|]比较,i取0~|T|-1 怎么计算T[i]对答案的贡献 因为是计算距离,并且字符只会是'a'或者'b',所以T[i]对答案的贡献是 T[i] == 'a' ? cnt_b : cnt_a;
其中,cnt_a,cnt_b是S[i]~S[i+|S|-|T|]中字符'a'和'b'的个数 T[i+1]对答案的贡献与T[i]的递推关系 由第一点知道T[i+1]会与S[i+1]~S[i+1+|S|-|T|]比较,相较T[i]时的S[i]~S[i+|S|-|T|],少掉了第一个字符S[i],多了末尾的S[i+1+|S|-|T|],所以T[i+1]时只需要在T[i]统计的基础上,考虑减掉S[i]和加上S[i+1+|S|-|T|],也就是 S[i] == 'a' ? --cnt_a : --cnt_b;
S[i + |S| - |T| + 1] == 'a' ? ++cnt_a : ++cnt_b;
T[i+1]对答案的贡献同T[i]时的计算方法
投递美团等公司10个岗位 >
0 点赞 评论 收藏
分享
0 点赞 评论 收藏
分享
关注他的用户也关注了: