2017计算机学科夏令营上机考试 D:Safecracker

表示这是一道考阅读理解的题。以为需要技巧,然而可以暴力。。。

自己做的时候居然出了一些小差错!太不应该了。。。

可以提交的题目连接:点击打开链接

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
char ans[6];
bool flag;
void solve(long long ta,string s)
{
	int i,j,k,m,n;
	flag=false;
	long long v, w, x, y,z,target;
	sort(s.begin(),s.end());
	for (i=s.length()-1;i>=0;i--)
		for (j=s.length()-1;j>=0;j--)
			for (k=s.length()-1;k>=0;k--)
				for (m=s.length()-1;m>=0;m--)
					for (n=s.length()-1;n>=0;n--)
					{
						if (i==j || i==k || i==m | i==n || j==k || j==m || j==n || k==m || k==n || m==n)
							continue;
						v=(long long)s[i]-'A'+1;w=(long long)s[j]-'A'+1;x=(long long)s[k]-'A'+1;y=(long long)s[m]-'A'+1; z=(long long)s[n]-'A'+1;
						target=v - pow(w,2)+ pow(x,3)- pow(y,4)+ pow(z,5);
						if (target==ta)
						{
							ans[0]=s[i];ans[1]=s[j];ans[2]=s[k];ans[3]=s[m];ans[4]=s[n];ans[5]='\0';
							flag=true;
							return;
						}
						
					}
	
}

int main()
{
	long long n;
	string s;
	while(cin>>n>>s)
	{
		if (n==0 && s=="END")
			break;
		solve(n,s);
		if (flag)
			cout<<ans<<endl;
		else 
			cout<<"no solution"<<endl;
	}
	return 0;
}


猜你喜欢

转载自blog.csdn.net/always_ease/article/details/80420883