题目描述
牛牛有一个正整数x,牛牛需要把数字x中的数位进行重排得到一个新数(不同于x的数),牛牛想知道这个新数是否可能是原x的倍数。请你来帮他解决这个问题。
输入描述:
输入包括t+1行,第一行包括一个整数t(1 ≤ t ≤ 10), 接下来t行,每行一个整数x(1 ≤ x ≤ 10^6)
输出描述:
对于每个x,如果可能重排之后变为自己的倍数输出"Possible", 否则输出"Impossible".
示例1
输出
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; }
原文链接: https://www.cnblogs.com/cstdio1/p/10994918.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/296443
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!