Палиндром Проблема с ответом, но не принятая - PullRequest
1 голос
/ 28 января 2020

Существует проблема с 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;
        }

    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...