J国开发了一个新型导弹,它可以击中距离发射点 2^a * 3^b * 5^c * 7^d 千米的目标。
也就是说,假设目标与发射点的距离为dis,如果能找到abcd使得上述式子等于dis,那么导弹就可以击中,若无法找到,则不能击中。
发射点与敌国的最小距离是123456789千米,这个距离之外全部是敌国领土,请问可以攻击到的敌国领土上的最近位置是多少?
输出:
一个整数
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
ll mi=1e10,dis=123456789,mx=1e9;
ll pa=1;
for(int a=0;a<=40;a++){ //范围可以大体计算一下来控制
ll pb=1;
for(int b=0;b<=30;b++){
ll pc=1;
for(int c=0;c<=18;c++){
ll pd=1;
for(int d=0;d<=18;d++){
ll x=pa*pb*pc*pd;
if(x<=mx&&x>=dis)
mi=min(mi,x);
else if(x>mx)
break;
pd*=7;
}
pc*=5;
}
pb*=3;
}
pa*=2;
}
printf("%lld\n",mi);
return 0;
}
我很想暴力,可又控制不好暴力留的范围,真真是许多大数扑面而来,我的天!如此罢了。