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