#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; } |
English