建水紫陶的烧制
题目背景
建水紫陶名扬天下,位列中国四大名陶。在最后的烧制环节,工匠们需要将陶坯排成一圈进行筛选。每一件陶坯都有一个从 1 到 N 的原始编号。由于窑位和温度控制极其考究,筛选过程遵循着古老而复杂的规则。
题目描述
现有 N 件陶坯排成一个环形。筛选过程总共进行 N−1 轮,每一轮都会取走一件陶坯。
筛选规则如下:
-
每一轮的跳跃步长 Ki 是动态变化的。第 i 轮(1≤i<N)的步长由以下公式给出:
Ki=(i×A+B)(modC)+1
其中 A,B,C 是由云南不同民族传统编号决定的常数。
-
第一轮从编号为 1 的陶坯开始计数。
-
计数与取出:在每一轮中,从当前起始位置开始,向后数第 Ki 个存活的陶坯并将其取走。
注:数 Ki 个意味着跳过 Ki−1 个存活陶坯。
-
下一轮起点:取走一件陶坯后,下一轮的计数起始点为被取走陶坯的下一个存活位置。
-
特殊加成(价值计算):
如果被取走的陶坯原始编号是一个质数,则该陶坯被视为具有“特殊加成”,会产生等同于其编号的价值 Vi。如果不是质数,则价值为 0。
任务:
- 求最后剩下的那一件陶坯的原始编号。
- 求所有被取走的陶坯产生的总价值。
输入格式
输入仅一行,包含四个整数 N,A,B,C。
输出格式
输出共两行。
第一行输出一个整数,表示最后剩下的陶坯原始编号。
第二行输出一个整数,表示被取走的陶坯总价值。
样例 #1
样例输入 #1
5 1 1 10
样例输出 #1
4
10
样例解释 #1
- N=5,A=1,B=1,C=10。初始:{1,2,3,4,5},起始位置为 1。
- 第 1 轮:K1=(1×1+1)%10+1=3。从 1 开始数 3 个存活陶坯:1→2→3。取走 3(质数,价值 3)。剩余 {1,2,4,5},下轮起点为 4。
- 第 2 轮:K2=(2×1+1)%10+1=4。从 4 开始数 4 个存活陶坯:4→5→1→2。取走 2(质数,价值 2)。剩余 {1,4,5},下轮起点为 4。
- 第 3 轮:K3=(3×1+1)%10+1=5。从 4 开始数 5 个存活陶坯:4→5→1→4→5。取走 5(质数,价值 5)。剩余 {1,4},下轮起点为 1。
- 第 4 轮:K4=(4×1+1)%10+1=6。从 1 开始数 6 个存活陶坯:1→4→1→4→1→4。取走 1。剩余 {4}。
- 最后剩下的是 4。总价值 3+2+5=10。
数据范围与提示
- 对于 30% 的数据:1≤N≤1000。
- 对于 60% 的数据:1≤N≤105。
- 对于 100% 的数据:1≤N≤106,1≤A,B,C≤109。
- 时间限制:2.0s,内存限制:512MB。