题目连接
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; }