浙大1078又WA
以前USACO好象也没有这类的问题啊/ 。/为什么明明做的对的程序总是过不了??
#include<iostream>
#include<vector>
using namespace std;
void convert(int n,int base,vector<int>& v)
{
int r=n%base;
int q=n/base;
v.push_back(r);
while(q>0)
{
r=q%base;
q=q/base;
v.push_back(r);
}
}
bool isPalindrome(vector<int>& v)
{
int size=v.size();
int i,j=size-1;
if(size%2==0)
{
for(i=0;i<size/2;i++)
if(v[i]==v[j]&&j>=(size/2))
j--;
else break;
if(i==size/2)
return true;
else
return false;
}
else
{
for(i=0;i<(int)(size/2);i++)
if(v[i]==v[j]&&j>(int)(size/2))
j--;
else break;
if(i==j)
return true;
else return false;
}
}
void print(vector<int>& v)
{
int i;
for(i=0;i<v.size();i++)
cout<<v[i]<<" ";
cout<<endl;
}
int main()
{
int n;
vector<int> v,V;
int i;
int count=2;
while(in>>n){
for(i=2;i<17;i++)
{
convert(n,i,v);
if(isPalindrome(v))
V.push_back(i);
v.erase(v.begin(),v.end());
}
if(!V.empty())
{cout<<"Number "<<n<<" is palindrome in basis ";
print(V); }
else
{ cout<<"Number "<<n<<" is not a palindrome"; cout<<endl;}
V.erase(V.begin(),V.end());
}
return 0;
}
运行任何情况都没错啊。 但是SUMBIT就WA 。。已经遇到很多次。 。请经常ACM高手解答