Suppose that the message starts like AAAAA... then your factor function will return pairs in which the second part is not initialized and leads to a runtime error. Now consider 2 messages: one that starts with ABABABA... and another that starts with BABABA... in both cases multiple numbers at the beginning of the input sequence would have the same value but can your code tell them apart? No, because in both cases p and p1 in your code would be equal which will cause your code to break again.
On Mon, 8 Apr 2019 at 02:06, thierry njike <[email protected]> wrote: > hello, > is anybody here who codes in C++ please? i've also got a Runtime error for > the cryptopangan problem even if i got the same output with the sample > test. that's my code below: > > #include <iostream> > #include <vector> > #include <string> > #include <algorithm> > using namespace std; > > pair<int, int> factor(int n); > int main() > { > > int T, N, L; > > vector<string> output(2); > vector<int> input(2); > vector<int> prime(2); > > cin >> T; > output.resize(T); > for (int i = 0; i < T; i++) { > cin >> N >> L; > input.resize(L); > prime.resize(L + 1); > int temp; > for (int j = 0; j < L; j++) { > cin >> temp; > input.at(j) = temp; > } > pair<int, int> p; > pair<int, int> p1; > p = factor(input.at(0)); > p1 = factor(input.at(1)); > if ((p.first == p1.first) || (p.first == p1.second)) { > prime.at(0) = p.second; > prime.at(1) = p.first; > if (p.first == p1.first) > prime.at(2) = p1.second; > else prime.at(2) = p1.first; > } > else { > prime.at(0) = p.first; > prime.at(1) = p.second; > if (p1.first == p.second) prime.at(2) = p1.second; > else prime.at(2) = p1.first; > } > for (int k = 3; k < L + 1; k++) { > prime.at(k) = (input.at(k - 1)) / (prime.at(k - > 1)); > if (prime.at(k)>N) return 0; > } > vector<int> trier(L + 1); > vector<pair<char, int>> letters(L + 1); > pair<char, int> p2; > trier = prime; > sort(trier.begin(), trier.end()); > char car = 'A'; > p2 = make_pair(car, trier.at(0)); > letters.at(0) = p2; > for (int k = 1; k < L + 1; k++) { > if (trier.at(k) == trier.at(k - 1)) > letters.at(k) = letters.at(k - 1); > else { > car++; > p2 = make_pair(car, trier.at(k)); > letters.at(k) = p2; > } > } > string out = ""; > for (int l = 0; l < L + 1; l++) { > for (int m = 0; m < L + 1; m++) { > if (prime.at(l) == letters.at(m).second) { > out += letters.at(m).first; > break; > } > } > } > output.at(i) = out; > } > for (int i = 0; i < T-1; i++) { > cout << "Case #" << i + 1 << ": " << output.at(i) << endl; > } > cout << "Case #" << T << ": " << output.at(T - 1); > > //system("pause"); > return 0; > } > > pair<int, int> factor(int n) { > pair<int, int> p; > int cpt = 0; > for (int i = 1; i < n; ++i) > { > if ((n % i == 0) && (i != 1)) { > if (cpt == 0) { > p.first = i; > cpt++; > } > else p.second = i; > } > } > return p; > } > > -- > You received this message because you are subscribed to the Google Groups > "Google Code Jam" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/google-code/1df05f28-2958-4bea-b51f-bfa29690e22a%40googlegroups.com > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Google Code Jam" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/google-code/CAOjxrSLNJMb4PDUhbaVoZBXS0v5vqaBH22ZbtgWiD%3DiQe7Yvjg%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
