P3716.第3题-虚拟货币挖矿算力匹配
题目内容
在一个虚拟货币挖矿系统中,每个矿工拥有一定的算力值n(范围在1 到1018之间)。系统需要为每个矿工分配一个算力档位,这个档位必须是小于等于矿工当前算力n的最大“稳定算力档”,并且这个档位的算力值各个数位之和必须是一个质数(质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数)。“稳定算力档”定义为从左到右每一位数字都不小于前一位数字,例如123、111、399都是符合要求的稳定算力档,像121、897
这种则不符合要求。合理分配算力档位有助于提高挖矿效率和稳定性。
输入描述
给定一个正整数n(1≤n≤1018)
输出描述
返回小于等于n的最大稳定算力档,且该整数的所有数位之和为质数。如果不存在这样的整数,则返回−1
样例1
输入
111
输出
111
说明
111本身即是"稳定算力档",从左到右每一位数字都不小于前一位数字,1+1+1=3是质数,所以函数返回111
样例2
输入
1
输出
-1
说明
小于等于1的"稳定算力档"只有1,1的数位之和为1,1不是质数(质数定义为大于1的自然数中,除了1和它自身外,不能被其他自然数整除的数),所以函数返回−1
样例3
输入
123
输出
122
说明
首先小于等于123的“稳定算力档"有 123、122、111等。123 的数位之和为1+2+3=6,不是质数,不符合条件。再继续找是122,数位之和为1+2+2=5是质数符合"稳定算力档条件。111的数位之和1+1+1=3也为质数也满足"稳定算力档"的条件,但111小于122,所以小于等于n的最大稳定算力档为122,函数返回122。