问题 E: 卜卦
提交: 1 解决: 1
[提交][状态][讨论版][命题人:qianyouyou][Edit] [TestData)]
题目描述
赵神是一个特别特别闷骚的人。别看他平日表现很高冷,其实他一直暗恋着自己的小迷妹小花花,一日不见兮,思之如狂。马上快七夕了,赵神想卜一卦算一下他的爱情幸运数,于是他找到了yoyo半仙替他卜卦。yoyo半仙需要赵神的3个幸运数字以及小花花的3个幸运数字方可进行卜卦。已知赵神的3个幸运数字是’5’’2’’0’而小花花的幸运数字是abc,(保证由5,2,0,a,b,c,这6个数各不相同,且abc均为30以内的素数)。卜卦规则如下:
由{520abc}组成的6个各不相同数中选取最小的3个数作为加数,其余最大的3个数作为基数。每一个数若加上加数仅能被基数整除,其他素数均不能整除,则该数称为幸运数。其中第1314个幸运数为爱情幸运数。
现在你刚好知道小花花的幸运数,请你帮yoyo完成卜卦吧。PS:顺利完成任务后则会收获赵神珍藏版kiss一枚。
输入
首行输入t,代表t组测试样例
接下来t行输入三个数abc。
输出
输出第1314个幸运值
样例输入
2 7 3 11 7 11 13
样例输出
29541015622 1775105893556
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int fort=1314;
ll coeff[6];
int cmp(ll a,ll b)
{
return a>b;
}
int main()
{
int t;
cin>>t;
while(t--){
cin>>coeff[0]>>coeff[1]>>coeff[2];
coeff[3]=5;
coeff[4]=2;
coeff[5]=0;
sort(coeff,coeff+6,cmp);
priority_queue<ll,vector<ll>,greater<ll> >pq;
set<ll> s;
set<ll> ans;
pq.push(1);
s.insert(1);
for(int i=0;;i++){
ll x=pq.top();
pq.pop();
if(i){
for(int k=3;k<6;k++){
ans.insert(x-coeff[k]);
if(ans.size()==fort)
break;
}
if(ans.size()==fort){
set<ll>::reverse_iterator it=ans.rbegin();
cout<<*it<<endl;
break;
}
}//if
for(int j=0;j<3;j++){
ll x2=x*coeff[j];
if(!s.count(x2)){
s.insert(x2);
pq.push(x2);
}
}
}
}
return 0;
}