Submission #1308708

#TimeUsernameProblemLanguageResultExecution timeMemory
1308708mxhrvsBinary Subsequences (info1cup17_binary)C++20
100 / 100
414 ms568 KiB
#include <iostream> #include <vector> #include <algorithm> #include <numeric> using namespace std; long long get_phi(int n) { long long result = n; for (int i = 2; i * i <= n; i++) { if (n % i == 0) { while (n % i == 0) n /= i; result -= result / i; } } if (n > 1) result -= result / n; return result; } int get_length(int a, int b) { int length = 0; while (a > 1 && b > 1) { if (a > b) { int count = (a - 1) / b; length += count; a -= count * b; } else { int count = (b - 1) / a; length += count; b -= count * a; } } if (a > 1) length += (a - 1); if (b > 1) length += (b - 1); return length; } void print_shortest_string(int a, int b) { vector<int> result; while (a > 1 && b > 1) { if (a > b) { int count = (a - 1) / b; for(int i=0; i<count; i++) result.push_back(0); // '0' ekle a -= count * b; } else { int count = (b - 1) / a; for(int i=0; i<count; i++) result.push_back(1); // '1' ekle b -= count * a; } } if (a > 1) { for(int i=0; i < a - 1; i++) result.push_back(0); } if (b > 1) { for(int i=0; i < b - 1; i++) result.push_back(1); } reverse(result.begin(), result.end()); for (int i = 0; i < result.size(); i++) { cout << result[i] << (i == result.size() - 1 ? "" : " "); } cout << endl; } void solve() { int K; cin >> K; long long count = get_phi(K + 2); cout << count << endl; int best_a = -1, best_b = -1; int min_len = 2000000000; for (int a = 1; a * 2 <= (K + 2); a++) { int b = (K + 2) - a; if (__gcd(a, b) == 1) { int current_len = get_length(a, b); if (current_len < min_len) { min_len = current_len; best_a = a; best_b = b; } } } if (best_a != -1) { print_shortest_string(best_a, best_b); } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int T; if (cin >> T) { while (T--) { solve(); } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...