BitComet 旗下网站

转到日志
相关贴吧:
acm of zju

zju1403

楼主 发表于:2008-08-23 14:12:03 [回复]

/*Safecracker
2008-08-23 09:41:49 Accepted 1403 C++ 00:00.17 848K 天将降大任于我
搜索 输入的字符串s中满足a-b^2+c^3-d^4+e^5=n 的字母 按字典序  最优输出
*/
#include<iostream>
#include<algorithm>
#include<cmath>
#include<string>
using namespace std;
const int N=12;
int a[N+1];
bool cmp(int a,int b)
{
 return a<b;
}
int main()
{
  string s;int n,k,i,i1,i2,i3,i4,i5,t;bool f;
  while(cin>>n>>s)
  {   if(n==0&&s=="END")  break;
   f=0;
   k=s.length()-1;
   for(i=0;i<=k;i++) a[i]=s[i]-'A'+1;
      sort(a,a+k,cmp);
      for(i1=k;i1>=0;i1--)
    for(i2=k;i2>=0;i2--)
     for(i3=k;i3>=0;i3--)
      for(i4=k;i4>=0;i4--)
       for(i5=k;i5>=0;i5--)
       {
        if(i1!=i2&&i1!=i3&&i1!=i4&&i1!=i5&&i2!=i3&&i2!=i4&&i2!=i5&&i3!=i4&&i3!=i5&&i4!=i5)
        {
                               t=a[i1]-pow(double(a[i2]),2.0)+pow(double(a[i3]),3.0)-pow(double(a[i4]),4.0)+pow(double(a[i5]),5.0);
          if(t==n) {f=1;goto loop;}
        }
       } 
loop: if(f) cout<<char(a[i1]-1+'A')<<char(a[i2]-1+'A')<<char(a[i3]-1+'A')<<char(a[i4]-1+'A')<<char(a[i5]-1+'A')<<endl;
   if(!f)  cout<<"no solution"<<endl;
  }
  return 0;
}

心难泰,世风坏,旧时正气今何在?正义寡,人情薄,闻道虽多,茅塞不开。怪!怪!怪! 空等待,几多载,冲出重围人心快!暴雨打,狂风袭,任他折磨,此志难改。耐!耐!耐!

 

您现在还没有登录,请在登录后发贴