A.小红小紫替换
思路:
签到题,字符串如果是kou 就替换成yukari 取余不变
解法:
无
Code:
#include<bits/stdc++.h> using namespace std; int main() { string s; std::cin >> s; std::cout << (s == "kou" ? "yukari\n" : s) << '\n'; return 0; }
B.小红的因子数
思路:
她想知道x有多少个不同的素因子,所以它的素因子不能是重复的,由于题解方法很多,这里只写两种
解法:
利用根号分解1到根号x就行,由于题意简单,掉坑点 x -> 1e13
Code:
解法1.
#include<bits/stdc++.h> using namespace std; using ll = long long; ll Cnt(ll val) { ll ans = 0;//计数的答案 for (ll i = 2; i * i <= val; i++) { if (val % i == 0) { ans ++; while (val % i == 0) { val /= i; } } } if (val > 1) { ans++; } return ans; } int main() { ll x; std::cin >> x; std::cout << Cnt(x) << '\n'; return 0; }
解法2:(STL 中 set储存不重复的值升序排列, map也是可以)
#include<bits/stdc++.h> using namespace std; using ll = long long; ll Cnt(ll val) { set<ll> st; ll ans = 0;//计数的答案 for (ll i = 2; i * i <= val; i++) { while (val % i == 0) { st.insert(i); val /= i; } } if (val > 1) { st.insert(val); } for (auto& x : st) { ans++; } return ans; } int main() { ll x; std::cin >> x; std::cout << Cnt(x) << '\n'; return 0; }
C.小红的字符串中值
思路:
枚举每个字符作为中值带来的贡献就是题意
解法:
/* int n = 8, char x = b; abcbcbaa 首先我们不乏发现这个字符串有三个b 先看第一个b a(1) b cccbaa(6) 中值 那么只有abc 和 b -》 2 再看第一个b abc(3) b cbaa(4) 只有 abcbcba 和 bcbc 和 cbc 和 b -》 4 再看最后的b abcbc(5) b aa(2) 只有 bcbaa 和 cba 和 b -》 3 总计 2 + 4 + 3 -》 9 i-> 索引 左边和右边的最小值 + 1 你会发现它有个规律(你就可以推出它的方程了) -> min(i, n - i - 1) + 1 */
Code:
#include<bits/stdc++.h> using namespace std; using ll = long long; int main() { int n; ll cnt = 0;//有n -> 1e5假设都是a char -> a所输出的长度是超过int范围的 char x; std::string s; std::cin >> n >> x >> s; for (int i = 0; i < n; i++) { if (x == s[i]) { cnt += min(n - i - 1, i) + 1; } } std::cout << cnt << '\n'; return 0; }
标签:std,周赛,很菜,int,31,long,ans,using,ll From: https://www.cnblogs.com/youhualiuh/p/18007211