求自守数的个数
自守数” 是平方尾数等于该数自身的自然数。例如:25*25=625 76*76=5776 9376*9376=87909376
输入:
n(自守数的位数)(n <= 15)
输出:
n 位的自守数
比如输入 1 输出 1 5 6
2 25 76,求各位大神指点,知道这些数之间有一些规律,但不知道怎么编写程序

忽略题目
[ 本帖最后由 香菱 于 2014-4-20 20:14 编辑 ]

2014-04-20 20:13
2014-04-20 21:48
2014-04-20 22:34
2014-04-20 22:36
2014-04-20 22:39
程序代码:#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define LEN 15
void print(int a[], int n)
{
for (n -= 1; n >= 0; n -= 1)
printf("%d", a[n]);
puts("");
}
int GetSum(int a[], int n)
{
int sum = 0;
for (int i = 0; i <= n; i += 1)
{
sum += a[i] * a[n - i];
}
return sum;
}
void fun(int a[], int ip, int flag, int n)
{
if (ip == n)
{
if (a[n-1]) print(a, n);
return;
}
for (a[ip] = 0; a[ip] < 10; a[ip] += 1)
{
int sum = GetSum(a, ip) + flag;
if (sum % 10 != a[ip]) continue;
fun(a, ip + 1, sum / 10, n);
}
}
int main( void )
{
int sa[LEN] = { 0 };
for (int n = 1; n <= LEN; n += 1)
{
fun(sa, 0, 0, n);
}
return 0;
}

2014-04-21 00:35
2014-04-21 08:33
程序代码:#include <stdio.h>
#include <math.h>
void main()
{
int i,j;
int d;
scanf("%d",&d);
for(i=(int)pow(10,d-1);i<(int)pow(10,d);i++)
{
for(j=10;j<(int)pow(10,d);j=j*10)
{
if(i/j == 0)
break;
}
if(((i*i)%j) == i)
printf("%d ",i);
}
printf("\n");
}
2014-04-21 09:18

2014-04-21 09:27
2014-04-21 11:48