Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "pch.h"
- #include <algorithm>
- #include <iostream>
- #include <vector>
- #include <iomanip>
- #include <random>
- #include <queue>
- #include <string>
- #include <map>
- #include <unordered_set>
- using namespace std;
- int main() {
- double p = 0;
- unsigned long long int n, k, a = 0 , b;
- cin >> n >> k;
- string s = to_string(n);
- double t = double((s.size() - 1)*(s.size() - 2)) / 2;
- int sum = 0;
- for (int i = 0; i < s.size(); ++i) {
- sum += s[i] - '0';
- }
- if (s[s.size()-1] % 5 == 0 || s[s.size() - 1] % 6 == 0) {
- p = 1;
- }
- if (sum % 3 == 0) {
- for (int i = 0; i < s.size(); ++i) {
- if (((s[i] - '0') % 2) == 0 || (s[i] - '0') % 5 == 0) {
- ++a;
- }
- }
- }
- else {
- for (int i = 0; i < s.size(); ++i) {
- if (((s[i] - '0') % 5) == 0) {
- ++a;
- }
- }
- }
- if (a == 0) {
- cout << 0;
- return 0;
- }
- b = s.size() - a;
- //cout << a << ' ' << b << endl;
- double q = double(s.size() * (s.size() - 1) )/ 2;
- //cout << p << ' ' << q << endl;
- for (int i = 0; i < k; ++i) {
- //p = (t + (a - 1) * p + (t + a) * (1 - p)) / q;
- //p = (t + (a - 1) * p + (t + a) * (1 - p)) / q;
- p = ((t + (a - 1)) * p + (t + a) * (1 - p)) / q;
- //cout << p << endl;
- }
- std::cout << std::fixed << std::setprecision(9) << p;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement