其实挺水的,因为两个数平方,只有固定的后面几位数会影响到最后结果的后面几位数。也就是说,如果想在平方之后尾数为987654321,那么就有固定的几个尾数在平方后会是这个数,打个表,发现 10^8 内 没有,10^9 内只有 8 个,然后排列组合……
上代码:
#include <cstdio> #include <cstring> #include <cstdlib> #include <cstring> using namespace std; typedef long long LL; int main() { int n; scanf("%d", &n); if (n <= 8) printf("0 "); else if (n == 9) printf("8 "); else { printf("72"); for (int i = 1; i <= n-10; ++i) printf("0"); printf(" "); } }