题目连接
http://www.wikioi.com/problem/1229/
c++中next_permutation和prev_permutation全排列操作
这题使用其中的某个函数来得到某一个排列,next_prevmutation是得到下一个排列,得到下一个返回true,没有就返回false
而prev_permutation得到上一个排列,得到上一个返回true,没有就返回false,头文件algorithm
该题代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
int judge(vector<int> v,int x,int k)
{
sort(v.begin(),v.end());
bool flag = true;
do
{
int sum = 0;
for(int i = 0; i < v.size(); i++)
sum = sum *10 + v[i];
//printf("sum = %d
",sum);
if( (sum + x) % k == 0)
return sum;
}while(next_permutation(v.begin(),v.end()));
return -1;
}
int main()
{
int n,m,x,k;
scanf("%d%d",&n,&m);
vector<int> v;
while(n--)
{
scanf("%d",&x);
v.push_back(x);
}
while(m--)
{
scanf("%d%d",&x,&k);
int sum = judge(v,x,k);
if(sum == -1)
printf("None
");
else
printf("%d
",sum);
}
return 0;
}