就知道肯定超时。。。
但实在不知道咋写了。。。
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int MOD = 998244353;
bool isPrime(int x) { // 质数判断
if (x < 2) return false;
for (int i = 2; i * i <= x; i++) {
if (x % i == 0) return false;
}
return true;
}
bool isPerfectSquare(int num) { // 完全平方数
if (num == 1)
return true;
int start = 2;
int end = num;
int mid;
while (start <= end) {
mid = start + (end - start) / 2;
if (mid == num / mid && num % mid == 0)
return true;
if (mid > num / mid)
end = mid - 1;
else
start = mid + 1;
}
return false;
}
bool check(int x) { // 各位之和为质数
int sum = 0;
while (x) {
int t = x % 10;
sum += t;
x /= 10;
}
if (isPrime(sum)) return true;
return false;
}
signed main()
{
int l, r;
cin >> l >> r;
int mul = 1;
for (int i = l; i <= r; i++) {
if (check(i) && isPerfectSquare(i)) {
mul *= i;
mul %= MOD;
}
}
if (mul == 0) cout << 0;
else cout << mul;
return 0;
}