Codeforces 894 A B 组合数学 比赛
题目链接: http://codeforces.com/contest/894
A: QAQ
题目描述: 问你一个字符串中有多少个QAQ
解题思路: 简单暴力
代码:
#include <iostream> #include <cstring> #include <string> using namespace std; int main() { string str; cin >> str; int n = (int)str.length(); long long res = 0; for(int i = 0; i < n; i++) { if(str[i] == 'A') { int cnt_f = 0, cnt_b = 0; for(int j = 0; j < i; j++) { if(str[j] == 'Q') cnt_f++; } for(int j = i+1; j < n; j++) { if(str[j] == 'Q') cnt_b++; } res += cnt_f * cnt_b; } } cout << res << endl; return 0; }
B: Ralph And His Magic Field
题目描述: 有n行m列。拉尔夫可以在每个块中放置一个整数。然而,魔术领域并不总是正常工作。只有在每行和每列中的整数乘积等于k时才有效,其中k是1或-1。现在拉尔夫想让你弄清楚在每个区块中放置数字的方法数量,以使魔法区域正常工作。(那么只能放1 or -1)两种方式被认为是不同的,当且仅当至少存在一个块,其中第一种方式和第二种方式中的数字是不同的。你被要求输出答案%1e9+7。(描述转自https://www.cnblogs.com/Roni-i/p/7866373.html)
解题思路: 我......我写了一张纸, 因为我觉得我要敲很久键盘才能表达清楚自己的意思......各位巨巨见谅......
代码:
: Codeforces Round #447 (Div. 2), problem: (B) Ralph And His Magic Field, Accepted, # #include <iostream> #include <cstring> #include <string> using namespace std; typedef long long ll; const ll mod = 1e9 + 7; ll quick_power (ll a, ll b) { ll ret = 1; while(b) { if(b & 1) ret = ret * a % mod; a = a * a % mod; b >>= 1; } return ret % mod; } int main() { ll n, m, k; cin >> n >> m >> k; if(n%2 != m%2 && k == -1) { cout << 0 << endl; } else { cout << quick_power(quick_power(2, n-1), m-1) << endl; } return 0; }
思考: 自己在比赛当中没有搞出来这道题, 特殊情况也没有讨论, 思路是正确的, 说这有啥用? 继续做C题
posted on 2017-11-26 15:21 FriskyPuppy 阅读(129) 评论(0) 编辑 收藏 举报