C语言求同构数没有结果

为啥不对哇?
/*求同构数

【问题描述】
设b是a的平方,若a与b的尾部相同,则称a是同构数。例如,5的平方是25,所以5是同构数,25也是同构数。

编写程序满足如下要求:
输入两个整数m和n,找出m、n之间全部的同构数(包括m和n本身)。

【输入形式】
从键盘输入数据范围的下限m和上限n,要求m和n都为整数,m和n之间用一个空格分隔。

【输出形式】
按照由小到大的顺序输出所有同构数,每个整数占一行。若在该范围内没有同构数,则输出字符串No Answer。

【样例输入1】
0 30
【样例输出1】
0
1
5
6
25
【样例说明1】
在0~30之间的同构数有0, 1, 5, 6, 25。

【样例输入2】
100 200
【样例输出2】
No Answer
【样例说明2】
在100~200之间,因为没有同构数,所以输出No Answer。*/
#include<stdio.h>
int main()
{
int m,n,a,b,t,i=1,f=0;
scanf("%d %d",&m,&n);

for(a=m;a<=n;a++)
{

    b=a*a;
    t=a;
    do
    {
        t=t/10;
        i=i*10;
    }while(t!=0);
    if(b%i==a)
       {
        printf("%d\n",a);
        f++;}

}
if(f==0)
    printf("No Answer");

    return 0;

}

问题见注释,供参考:

#include <stdio.h>
int main()
{
    int m,n,a,b,t,i=1,f=0;
    scanf("%d %d",&m,&n);
    for(a=m;a<=n;a++)
    {
        b=a*a;
        t=a;
        i=1; //修改 i 没有重新置位
        do{
            t=t/10;
            i=i*10;
        }while(t!=0);
        if(b%i == a)
        {
            printf("%d\n",a);
            f++;
        }
    }
    if(f==0)
        printf("No Answer");
    return 0;
}