Существует проблема с Pallindrome, указанная на сайте. www.spoj.com. Заявление о проблеме: - Для заданного положительного целого числа K, не превышающего 1000000 цифр, запишите значение наименьшего палиндрома, большего K, для вывода. Числа всегда отображаются без начальных нулей. Ввод
Первая строка содержит целое число t - количество тестов. Целые числа K приведены в следующих t строках.
Я написал CPP код для этого
#include <iostream>
#include <vector>
#include <string>
#include <cstring>
#include <sstream>
#include <bits/stdc++.h>
#include<limits>
using namespace std;
int main(){
int b;
cin>>b;
int num[b];
for(int i=0;i<b;i++){
cin>>num[i];
if(num[i]>1000000){
//cout<<"Enter value less than 1000000"<<endl;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(),'\n');
//cout<<"You have entered wrong input"<<endl;
cin>>num[i];
}
}
string a[b];
for(int i=0;i<b;i++){
long numb = num[i] + 1;
if(!(numb>1000000 || num[i] <10 )){
for(int k=numb; k<1000000; k++){
stringstream ss;
ss << k;
string str=ss.str();
string ostr = str;
reverse(str.begin(), str.end());
if(ostr == str){
a[i] = ostr;
//cout<<ostr<<endl;
break;
}
}
cout<<a[i]<<endl;
}
}
}
Это все еще не приемлемый ответ. Где я что-то упустил Я проверил с большим количеством тестов и он работает.
В соответствии с предложениями я изменил его на это, но все же он не был принят.
#include <iostream>
#include <vector>
#include <string>
#include <cstring>
#include <sstream>
//#include <bits/stdc++.h>
#include<limits>
using namespace std;
int main(){
int b;
cin>>b;
int num[b];
for(int i=0;i<b;i++){
cin>>num[i];
if(num[i]>1000000){
//cout<<"Enter value less than 1000000"<<endl;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(),'\n');
//cout<<"You have entered wrong input"<<endl;
cin>>num[i];
}
}
string a[b];
for(int i=0;i<b;i++){
long numb = num[i] + 1;
if(!(numb>1000000 || num[i] <10 )){
for(int k=numb; k<1000000; k++){
stringstream ss;
ss << k;
string str=ss.str();
string ostr = str;
int len = str.length();
int n=len-1;
for(int m=0;m<(len/2);m++){
//Using the swap method to switch values at each index
swap(str[m],str[n]);
n = n-1;
}
//reverse(str.begin(), str.end());
if(ostr == str){
a[i] = ostr;
//cout<<ostr<<endl;
break;
}
}
cout<<a[i]<<endl;
}
}
}