原题链接

E小红的完全平方数构造

image-20260123184051425

题面解读

E-小红的完全平方数构造_牛客周赛 Round 126

给定一个整数 nn,要求你在 nn 的后面追加至少 1 位数字,使得新的数字 nn' 成为一个完全平方数。

解题思路

参考题解

显然可以想到遍历后面加了几位。

对于添加了 img 位的情况,此时数字的范围为 img,不妨取第一个大于等于 img 的完全平方数,若其小于等于 img ,则满足题意。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <bits/stdc++.h>
using namespace std;

typedef long long ls;
int t, n;

ls find(ls x)
{
ls l = 1, r = 2e9 + 10;
while (l < r)
{
ls mid = l + (r - l) / 2;
if (mid * mid >= x)
r = mid;
else
l = mid + 1;
}
return l;
}

void solve()
{
cin >> n;
for (int k = 1; k <= 18; k++){
ls low = n * (ls)pow(10, k);
ls high = (n+1)*(ls)pow(10, k) - 1;
ls t = find(low);
t *= t;
if (t >= low && t <= high){
cout << t << endl;
return;
}
}
}

int main(){
cin >> t;
while (t--) solve();
}