博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
upc组队赛15 Supreme Number【打表】
阅读量:5855 次
发布时间:2019-06-19

本文共 2405 字,大约阅读时间需要 8 分钟。

Supreme Number

题目描述

A prime number (or a prime) is a natural number greater than 1 that cannot be formed by multiplying two smaller natural numbers.

Now lets define a number N as the supreme number if and only if each number made up of an non-empty subsequence of all the numeric digits of N must be either a prime number or 1.
For example, 17 is a supreme number because 1, 7, 17 are all prime numbers or 1, and 19 is not, because 9 is not a prime number.
Now you are given an integer N (2≤N≤10100), could you find the maximal supreme number that does not exceed N?

输入

In the first line, there is an integer T(T≤100000) indicating the numbers of test cases.

In the following T lines, there is an integer N (2≤N≤10100).

输出

For each test case print "Case #x: y", in which x is the order number of the test case and y is the answer.

样例输入

26100

样例输出

Case #1: 5Case #2: 73

题解

通过打表发现满足条件的最大数为317

坑点在于石油大把10^100写成10100

代码

#include
using namespace std;#define rep(i,a,n) for(int i=a;i
#define PLL pair
#define PI acos(1.0)#define eps 1e-6#define inf 1e17#define INF 0x3f3f3f3f#define MOD 998244353#define mod 1e9+7#define N 1000005const int maxn=10000;// int prime[1000100]; //打表程序// bool book[1000100];// int top;// void isprime()// {// memset(book, true, sizeof(book));// book[1] = false;// for(int i=2;i
= 1000;i--)// {// if(book[i])// {// int temp = i;// int a = temp%10;// temp/=10;// int b = temp%10;// temp/=10;// int c = temp%10;// temp /=10;// int d = temp;// printf("%d %d %d %d\n",d,c,b,a);// if(book[a] && book[b] && book[c] && book[d] && book[d*10+c] && book[d*10+b] && book[d*10+a] && book[c*10 + b] && book[c*10 + a] && book[b*10 + a] && book[d*100 + c*10 +b] && book[d*100 + c*10 +a] && book[d*100 + b*10 +a] && book[c*100 + b*10 +a])// {// printf("%d\n",i);// }// }// }// }int a[100] = {1,2,3,5,7,11,13,17,23,31,37,53,71,73,113,131,137,173,311,317,10101};int main(){ int n; int t; sca(t); int cas = 1; string s; while(t--) { // sca(n); n = 0; cin>>s; if(s.length()>4) { printf("Case #%d: %d\n",cas++,317); continue; } rep(i,0,s.length()) { n = n*10+s[i]-'0'; } rep(i,0,21) { if(n

转载于:https://www.cnblogs.com/llke/p/10809660.html

你可能感兴趣的文章
学习目标
查看>>
《利用python进行数据分析》学习笔记--数据聚合与分组(groupby)
查看>>
C++中的函数指针模板
查看>>
2015年个人总结
查看>>
C#编程(六)------------枚举
查看>>
高性能 Windows Socket 组件 HP-Socket v2.3.1-beta-2 发布
查看>>
ZOJ 3316 Game 一般图最大匹配带花树
查看>>
《系统架构师》——操作系统和硬件基础
查看>>
如何看待一本图书
查看>>
angularjs1-7,供应商
查看>>
oracle参数列表
查看>>
Wordpress3.2去除url中的category(不用插件实现)
查看>>
The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine-Excel2003
查看>>
《Java 2 图形设计卷Ⅱ- SWING》第12章 轻量容器
查看>>
macOS Sierra 代码显示未来 Mac 将搭载 ARM 芯片
查看>>
《Arduino家居安全系统构建实战》——1.3 部署安全系统的先决条件
查看>>
Linux 中如何通过命令行访问 Dropbox
查看>>
《jQuery移动开发》—— 1.3 小结
查看>>
使用 Flutter 反序列化 JSON 的一些选项
查看>>
开发进度——4
查看>>