C语言求同构数个数问题

找出1与n之间(包括1和n)的全部“同构数”的个数。“同构数”是这样一种数,它出现在它的平方数的右端。例如,5的平方是25,5是25的右端的数;25也是一个同构数,它的平方是625。
输入
输入数据只有一组,在一行上输入正整数n(0<n<1000)。
输出
在1与n之间的“同构数”的个数。

供参考:

#include <stdio.h>
int main()
{
    int i, n, k, t, s, flg = 0;
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
    {
        t = i; k = i * i; s = 1;
        while (t) { s *= 10; t /= 10; }
        if ((k % s) == i)  flg++ ;
    }
    if (!flg)
        printf("No exist");
    else
        printf("%d",flg);
    return 0;
}