#include <stdio.h> #include <stdlib.h> int main() { int n, menor, maior, i, j; scanf("%d", &n); char str[6]; while (n--) { scanf("%d %d", &menor, &maior); for (i = menor; i <= maior; i++) printf("%d", i); for (i = maior; i >= menor; i--) { sprintf(str, "%d", i); for (j = strlen(str)-1; j >= 0; j--) printf("%c", str[j]); } printf("\n"); } return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <iostream> #include <algorithm> #include <string> using namespace std; int main() { int n, init, end; cin >> n; while(n--){ cin >> init >> end; string s; for(int i = init;i<=end;i++){ cout << i; s += to_string(i); } reverse(s.begin(),s.end()); cout << s << endl; } return 0; } |
A minha solução alternativa até que fica parecida, mas ela utiliza variáveis unsigned int, sendo mais específico, já que não há valor negativo para n, maior e menor.
Outra diferença foi a criação do segundo for; no primeiro, imprime-se os valores na ordem, no segundo, o valor é enviado um a um para a string e já é invertido e impresso. É apenas outra forma de abordar o problema. E você, como resolveu o exercício 2157?
#include <algorithm> #include <iostream> using namespace std; int main() { unsigned int n, menor, maior; cin >> n; while (n--) { cin >> menor >> maior; for (int i = menor; i <= maior; i++) cout << i; for (int i = maior; i >= menor; i--) { string reverso = to_string(i); reverse(reverso.begin(), reverso.end()); cout << reverso; } cout << endl; } return 0; }