首页 > 其他分享 >抛砖引玉

抛砖引玉

时间:2024-10-25 10:49:43浏览次数:7  
标签:输出 10 质数 抛砖引玉 num 277 Copy

题目背景

类以诱之,击蒙也。

题目描述

刘老师 认为质数是玉。

现在他给你一个不包含数位 00 的整数 nn,请你看看能否通过重新排列数位来把这个整数变为质数。

如果可以,输出可以变成的最小的一个质数,否则输出 −1−1。

输入格式

一个数 nn。

输出格式

输出重排数位(也可以不重排)可以变成的最小的一个质数,如果变不成质数,输出 −1−1。

输入数据 1

772

Copy

输出数据 1

277

Copy

实际上 277,727277,727 都是质数,输出较小的就是 277277。

输入数据 2

277

Copy

输出数据 2

277

Copy

可以不重排,如果初始就是质数。

输入数据 3

248

Copy

输出数据 3

-1

Copy

不管怎么重排都不是质数。

数据规模与约定

对于 100%100% 的数据,1≤n<1061≤n<106,且 nn 不含数位 00。

  • 子任务 1(10 分):保证怎么排都不是质数。(但想必不会有人第一题只输出 −1−1 拿 1010 分吧。)
  • 子任务 2(30 分):保证 n<20n<20。
  • 子任务 3(40 分):保证 nn 是个三位数。
  • 子任务 4(20 分):没有特殊限制。

题解:

#include<bits/stdc++.h>
using namespace std;
bool ss(int n){
	if(n<2) return 0;
	for(int i=2;i<=sqrt(n);i++){
		if(n%i==0) return 0;
	}
	return 1;
} 
int main() {
    //freopen("pao.in","r",stdin);
    //freopen("pao.out","w",stdout);
    int n;
    cin >> n;
    vector<int> d;
    int t = n;
    while (t > 0) {
        d.push_back(t % 10);
        t /= 10;
    }
    sort(d.begin(), d.end());
    do {
        int num = 0;
        for (int digit : d) {
            num = num * 10 + digit;
        }
        if (ss(num)) {
            cout << num << endl;
            return 0;
        }
    } while (next_permutation(d.begin(), d.end()));
    cout << -1 << endl;
    return 0;
}

标签:输出,10,质数,抛砖引玉,num,277,Copy
From: https://blog.csdn.net/lijunxian0818/article/details/143229130

相关文章

  • 抛砖引玉:Redis 与 接口自动化测试框架的结合
    接口自动化测试已成为保证软件质量和稳定性的重要手段。而Redis作为一个高性能的缓存数据库,具备快速读写、多种数据结构等特点,为接口自动化测试提供了强大的支持。勇哥这里粗略介绍如何结合Python操作Redis,并将其应用于接口自动化测试框架中,以提升测试效率和数据管理能力。Redi......