#include <stdio.h> #include <iostream> #include <vector> #include <iterator> #include <math.h> void print(std::vector<int> data); std::string result; int onesCounter; std::vector<int> getComponents(int k) { std::vector<int> czynniki; int i=0,d,maxd=31623; for(d = 2; d <= maxd; d++) while((k % d) == 0) { czynniki.push_back(d); k /= d; }; if (k!=1) czynniki.push_back(k); return czynniki; } void printOne(int n) { if (n<6) { result += "(1"; onesCounter++; for (int i=1;i<n;i++) { result += "+1"; onesCounter++; } result += ")"; } else { std::vector<int> czynniki = getComponents(n-1); result += "(1+";onesCounter++; print(czynniki); result += ")"; } } void print(std::vector<int> data) { printOne(data[0]); if (data.size()==1) return; for (int i=1;i<data.size();i++) { result += "*"; printOne(data[i]); } } void solve(int k) { result = ""; onesCounter = 0; if (k==1) { result += "1"; std::cout << "1" << std::endl; return; } std::vector<int> czynniki = getComponents(k); print(czynniki); if (onesCounter<=100) { std::cout << result.c_str(); //std::cout << onesCounter; } else std::cout << "NIE"; std::cout << std::endl; } int main() { //solve(418195493); int t,k; std::cin >> t; for (int i=0;i<t;i++) { std::cin >> k; solve(k); } return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | #include <stdio.h> #include <iostream> #include <vector> #include <iterator> #include <math.h> void print(std::vector<int> data); std::string result; int onesCounter; std::vector<int> getComponents(int k) { std::vector<int> czynniki; int i=0,d,maxd=31623; for(d = 2; d <= maxd; d++) while((k % d) == 0) { czynniki.push_back(d); k /= d; }; if (k!=1) czynniki.push_back(k); return czynniki; } void printOne(int n) { if (n<6) { result += "(1"; onesCounter++; for (int i=1;i<n;i++) { result += "+1"; onesCounter++; } result += ")"; } else { std::vector<int> czynniki = getComponents(n-1); result += "(1+";onesCounter++; print(czynniki); result += ")"; } } void print(std::vector<int> data) { printOne(data[0]); if (data.size()==1) return; for (int i=1;i<data.size();i++) { result += "*"; printOne(data[i]); } } void solve(int k) { result = ""; onesCounter = 0; if (k==1) { result += "1"; std::cout << "1" << std::endl; return; } std::vector<int> czynniki = getComponents(k); print(czynniki); if (onesCounter<=100) { std::cout << result.c_str(); //std::cout << onesCounter; } else std::cout << "NIE"; std::cout << std::endl; } int main() { //solve(418195493); int t,k; std::cin >> t; for (int i=0;i<t;i++) { std::cin >> k; solve(k); } return 0; } |