<span>Один бит, один символ. </span>
<span>1200 бит/с 1200 символов/с </span>
<span>и т.д. </span>
Код написан ниже.
Пример ввода:
4
x100+12mamba+11=barry-3
7x100-4barry=4
barry=x100-2mamba
4=2+2
Пример вывода:
barry=6
mamba=-1
x100=4
#include <iostream>
#include <map>
#include <string>
#include <set>
#include <vector>
#define abs(x) ((x)<0 ? -(x) : (x))
using namespace std;
typedef map<string, double> equation;
equation parseLine(const string &str, set<string> &vars) {
map<string, double> eqn;
bool left_part = true;
size_t i = 0;
while (i < str.length()) {
double n = 0;
bool isNeg = !left_part;
bool isCoeffOmitted = true;
string var = "";
if (str[i] == '='){
left_part = false;
i++;
continue;
}
if ((str[i] == '-') || (str[i] == '+'))
{
if (str[i] == '-') isNeg = !isNeg;
i += 1;
}
while ((i < str.length()) && (str[i] >= '0') && (str[i] <= '9')) {
n = 10 * n + (str[i] - '0');
isCoeffOmitted = false;
i++;
}
if ((i < str.length()) && (str[i] == '.')) {
int exp = 0;
i++;
while ((i < str.length()) && (str[i] >= '0') && (str[i] <= '9')){
n = 10 * n + (str[i] - '0');
exp++;
i++;
}
for (int j = 0; j < exp; n /= 10., j++);
}
while ((i < str.length()) && (str[i] != '+') && (str[i] != '=') && (str[i] != '-')){
var += str[i];
i++;
}
if (isCoeffOmitted) n = 1;
if (isNeg) n = -n;
eqn[var] += n;
vars.insert(var);
}
return eqn;
}
void GaussJordan(vector<equation> &eqns, const vector<string> &vars) {
for (size_t i = 0; i < vars.size(); i++) {
size_t j = i;
while ((j < eqns.size()) && (eqns[j][vars[i]] == 0))
j++;
if (j == eqns.size()) throw "Underdetermined system";
if (j != i) swap(eqns[i], eqns[j]);
double elem = eqns[i][vars[i]];
for (equation::iterator it = eqns[i].begin(); it != eqns[i].end(); it++)
it->second /= elem;
for (j = i + 1; j < eqns.size(); j++){
elem = eqns[j][vars[i]];
for (equation::iterator it = eqns[i].begin(); it != eqns[i].end(); it++)
eqns[j][it->first] -= elem * eqns[i][it->first];
}
}
for (size_t i = vars.size(); i < eqns.size(); i++)
for (equation::iterator it = eqns[i].begin(); it != eqns[i].end(); it++)
if (abs(it->second) > 1e-12) throw "No solutions";
for (size_t i = vars.size() - 1; i > 0; i--) {
for (size_t j = 0; j < i; j++) {
eqns[j][""] -= eqns[j][vars[i]] * eqns[i][""];
eqns[j][vars[i]] = 0;
}
}
}
void printAnswer(vector<equation> &eqns, vector<string> &vars) {
for (size_t i = 0; i < vars.size(); i++)
cout << vars[i] << "=" << -eqns[i][""] << endl;
}
int main() {
set<string> vars;
vector<equation> eqns;
size_t n = 0;
cin >> n;
for (size_t i = 0; i < n; i++) {
string t;
cin >> t;
eqns.push_back(parseLine(t, vars));
}
vars.erase("");
vector<string> vars_list(vars.begin(), vars.end());
try {
GaussJordan(eqns, vars_list);
}
catch (char const *e) {
cout << e;
return 1;
}
printAnswer(eqns, vars_list);
return 0;
}
Символов которых нет на клавиатуре это :
Математические дроби - то есть это : <span>⅟ ½ ⅓ ¼ ⅕ ⅙ ⅐ ⅛ ⅑ ⅒ ⅔ ¾ ⅖ ⅗ ⅘ ⅚ ⅜ ⅝ ⅞.
Знаки тире как: длинное тире , цифровое тире , горизонтальная линия .
Математические символы такие как: </span>∫ ∬ ∭ ∮ ∯ ∰ ∱ ∲ ∳
<span>∃ ∄ ∅ ∆ ∇ ∈ ∉ ∊ ∋ ∌ ∍ ∎ ∏ ∐ ∑ − ∓ ∔ ∕ ∖ ∗ ∘ ∙ √ ∛ ∜ ∝ ∟ ∠ ∡ ∢ ∣ ∤ ∥ ∦ ∧ ∨ ∩ ∪ ∴ ∵ ∶ ∷ ∸ ∹ ∺ ∻ ∼ ∽ ∾ ∿ ≀ ≁ ≂ ≃ ≄ ≅ ≆ ≇ ≈ ≉ ≊ ≋ ≌ ≍ ≎ ≏ ≐ ≑ ≒ ≓ ≔ ≕ ≖ ≗ ≘ ≙ ≚ ≛ ≜ ≝ ≞ ≟ ≠ ≡ ≢ ≣ ≤ ≥ ≦ ≧ ≨ ≩ ≪ ≫ ≬ ≭ ≮ ≯ ≰ ≱ ≲ ≳ ≴ ≵ ≶ ≷ ≸ ≹ ≺ ≻ ≼ ≽ ≾ ≿ ⊀ ⊁ ⊂ ⊃ ⊄ ⊅ ⊆ ⊇ ⊈ ⊉ ⊊ ⊋ ⊌ ⊍ ⊎ ⊏ ⊐ ⊑ ⊒ ⊓ ⊔ ⊕ ⊖ ⊗ ⊘ ⊙ ⊚ ⊛ ⊜ ⊝ ⊞ ⊟ ⊠ ⊡ ⊢ ⊣ ⊤ ⊥ ⊦ ⊧ ⊨ ⊩ ⊪ ⊫ ⊬ ⊭ ⊮ ⊯ ⊰ ⊱ ⊲ ⊳ ⊴ ⊵ ⊶ ⊷ ⊸ ⊹ ⊺ ⊻ ⊼ ⊽ ⊾ ⊿ ⋀ ⋁ ⋂ ⋃ ⋄ ⋅ ⋆ ⋇ ⋈ ⋉ ⋊ ⋋ ⋌ ⋍ ⋎ ⋏ ⋐ ⋑ ⋒ ⋓ ⋔ ⋕ ⋖ ⋗ ⋘ ⋙ ⋚ ⋛ ⋜ ⋝ ⋞ ⋟ ⋠ ⋡ ⋢ ⋣ ⋤ ⋥ ⋦ ⋧ ⋨ ⋩ ⋪ ⋫ ⋬ ⋭ ⋮ ⋯ ⋰ ⋱ ⋲ ⋳ ⋴ ⋵ ⋶ ⋷ ⋸ ⋹ ⋺ ⋻ ⋼ ⋽ ⋾ ⋿ ✕ ✖ ✚.
Символы как процент -</span><span>‰
Римские цифры : </span>Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ Ⅺ Ⅻ
<span>ⅰ ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ ⅸ ⅹ ⅺ ⅻ.
Цифры в кружках - </span><span>⓵ ⓶ ⓷ ⓸ ⓹ ⓺ ⓻ ⓼ ⓽ ⓾ ➊ ➋ ➌ ➍ ➎ ➏ ➐ ➑ ➒ ➓
⓪ ➀ ➁ ➂ ➃ ➄ ➅ ➆ ➇ ➈ ➉ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯ ⑰ ⑱ ⑲ ⑳
❶ ❷ ❸ ❹ ❺ ❻ ❼ ❽ ❾ ❿ ⓫ ⓬ ⓭ ⓮ ⓯ ⓰ ⓱ ⓲ ⓳ ⓴
</span>Латинские буквы в кружочках:
<span>ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏ
ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ
Знаки валютных купюр : </span><span>$ € ¥ £ ƒ ₣ ¢ ¤ ฿ ₠ ₡ ₢ ₤
Смайлики:</span><span>㋛ ソ ッ ヅ ツ ゾ シ ジ ッ ツ シ ン 〴 ت ☺ ☻ ☹
Рука , указательнйы палец и многое другое ( </span>✉ ✍ ✎ ✏ ✐ ✑ ✒,☚☛☜☝☞☟✌,<span>✆ ☎ ☏,</span>
На сколько информация доступна пользователю и на сколько она ему понятна