#include <iostream> #include <vector> #include <algorithm> #include <cmath> using namespace std; int odciecie = 0; string wypisz_jedynkami(long long int a, string prefiks, int przelicznik) { if (a == 0) return ""; if (a == 1) { odciecie -= 1*przelicznik; return prefiks + "1"; } if (a == 2) { odciecie -= 2*przelicznik; return prefiks + "1+1"; } if (a == 3) { odciecie -= 3*przelicznik; return prefiks + "1+1+1"; } long long int b = (int) floor(sqrt(a)); long long int r = a - (int) pow(b, 2); long long int r_pom = a - (b * (b + 1)); string wypisane_b1, wypisane_b2, wypisane_r; if (r_pom >= 0) { wypisane_b1 = wypisz_jedynkami(b, "", przelicznik); wypisane_b2 = wypisz_jedynkami(b+1, "", przelicznik); wypisane_r = wypisz_jedynkami(r_pom, "+", przelicznik); } else { wypisane_b1 = wypisz_jedynkami(b, "", przelicznik*2); wypisane_b2 = wypisane_b1; wypisane_r = wypisz_jedynkami(r, "+", przelicznik); } if (odciecie <= 0) return "NIE"; if (wypisane_b1 != "1") wypisane_b1 = "(" + wypisane_b1 + ")"; if (wypisane_b2 != "1") wypisane_b2 = "(" + wypisane_b2 + ")"; return prefiks + wypisane_b1 + "*" + wypisane_b2 + wypisane_r; } int main() { ios_base::sync_with_stdio(0); int t; long long int liczba; cin >> t; for (int i=0; i < t; ++i) { odciecie = 100; cin >> liczba; cout << wypisz_jedynkami(liczba, "", 1) << endl;// " " << odciecie << endl; } 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 | #include <iostream> #include <vector> #include <algorithm> #include <cmath> using namespace std; int odciecie = 0; string wypisz_jedynkami(long long int a, string prefiks, int przelicznik) { if (a == 0) return ""; if (a == 1) { odciecie -= 1*przelicznik; return prefiks + "1"; } if (a == 2) { odciecie -= 2*przelicznik; return prefiks + "1+1"; } if (a == 3) { odciecie -= 3*przelicznik; return prefiks + "1+1+1"; } long long int b = (int) floor(sqrt(a)); long long int r = a - (int) pow(b, 2); long long int r_pom = a - (b * (b + 1)); string wypisane_b1, wypisane_b2, wypisane_r; if (r_pom >= 0) { wypisane_b1 = wypisz_jedynkami(b, "", przelicznik); wypisane_b2 = wypisz_jedynkami(b+1, "", przelicznik); wypisane_r = wypisz_jedynkami(r_pom, "+", przelicznik); } else { wypisane_b1 = wypisz_jedynkami(b, "", przelicznik*2); wypisane_b2 = wypisane_b1; wypisane_r = wypisz_jedynkami(r, "+", przelicznik); } if (odciecie <= 0) return "NIE"; if (wypisane_b1 != "1") wypisane_b1 = "(" + wypisane_b1 + ")"; if (wypisane_b2 != "1") wypisane_b2 = "(" + wypisane_b2 + ")"; return prefiks + wypisane_b1 + "*" + wypisane_b2 + wypisane_r; } int main() { ios_base::sync_with_stdio(0); int t; long long int liczba; cin >> t; for (int i=0; i < t; ++i) { odciecie = 100; cin >> liczba; cout << wypisz_jedynkami(liczba, "", 1) << endl;// " " << odciecie << endl; } return 0; } |