题解 P2368 【EXCEEDED WARNING B】

· · 题解

分析

先写个小程序 通过暴力枚举:

当n<=8时,无解

当n=9时 有8个满足要求的数:

111111111

119357639

380642361

388888889

611111111

619357639

880642361

888888889

容易知道,某个数的平方为987654321时,以这个数结尾的数,它的平方也是987654321

所以当n>9时,满足条件的数只能以上述八个数结尾

当n=10时,由于最高位不为0,所以又8*9=72个

n=11时,71*10个;n=12时,72*10*10个...以此类推

代码

#include<cstdio>
int n;
int main()
{
    scanf("%d",&n);
    if (n<9) printf("0\n");
    else if (n==9) printf("8\n");
    else 
    {
        printf("72");
        for (int i=0;i<n-10;i++) printf("0");
        printf("\n");
    }
    return 0;
}