1229 数字游戏

题目连接

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;
}
原文地址:https://www.cnblogs.com/yyroom/p/3725745.html