zoukankan      html  css  js  c++  java
  • 数位重排

    题目描述

    牛牛有一个正整数x,牛牛需要把数字x中的数位进行重排得到一个新数(不同于x的数),牛牛想知道这个新数是否可能是原x的倍数。请你来帮他解决这个问题。

    输入描述:

    输入包括t+1行,第一行包括一个整数t(1 ≤ t ≤ 10),
    接下来t行,每行一个整数x(1 ≤ x ≤ 10^6)

    输出描述:

    对于每个x,如果可能重排之后变为自己的倍数输出"Possible", 否则输出"Impossible".
    示例1

    输入

    复制
    2
    14
    1035

    输出

    复制
    Impossible
    Possible
    解题思路:利用c++STL中的全排列可以极大地简化代码,期间用到的函数在我的c++分类中有说明
    代码如下:
    #include <bits/stdc++.h>
    using namespace std;
    int main() {
        int T; cin >> T;
        while (T--) {
            int n; cin >> n;
            string s_n = to_string(n);
            sort(s_n.begin(), s_n.end());
            bool flag = false;
            do {
                int p_num = stoi(s_n);
                if (p_num!=n && p_num%n==0) {
                    flag = true;
                    break;
                }
            } while (next_permutation(s_n.begin(), s_n.end()));
            cout << (flag ? "Possible" : "Impossible") << endl;
        }
        return 0;
    }
    不一样的烟火
  • 相关阅读:
    物体也能正常移动
    同时按住两个键
    连续子数组的最大和Java实现
    Entity Framework基础01
    MVC知识进阶01
    面向对象基础进阶03
    面向对象基础进阶02
    面向对象基础进阶01
    little skill---ping
    SqlServer------范式小结
  • 原文地址:https://www.cnblogs.com/cstdio1/p/10994918.html
Copyright © 2011-2022 走看看