20200314之新型导弹 (枚举 填空)

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;
}

我很想暴力,可又控制不好暴力留的范围,真真是许多大数扑面而来,我的天!如此罢了。

发布了37 篇原创文章 · 获赞 0 · 访问量 367

猜你喜欢

转载自blog.csdn.net/weixin_45351699/article/details/104868527
今日推荐