小蓝正在玩拼图游戏,他有 73851378887217385137888721 个 2×22×2 的方块和 1047024510470245 个 1×11×1 的方块,他需要从中挑出一些来拼出一个正方形,比如用 33 个 2×22×2 和 44 个 1×11×1 的方块可以拼出一个 4×44×4 的正方形,用 99 个 2×22×2 的方块可以拼出一个 6×66×6 的正方形,请问小蓝能拼成的最大的正方形的边长为多少。
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
#include<bits/stdc++.h>
using namespace std;
int main(){
long long num_2x2 = 7385137888721;
long long num_1x1 = 10470245;
long long max_posible_area = 4 * num_2x2 + num_1x1;
long long max_posible_side = static_cast<long long>(sqrt(max_posible_area));
for(long long side = max_posible_side; side > 0;side-- ){
long long area = side * side;
long long max_2x2 = area / 4;
long long need_1x1 = area % 4;
if(max_2x2 >= num_2x2 && need_1x1 <= num_1x1){
printf("%lld",side);
break;
}
}
return 0;
}