求自守数的个数
自守数” 是平方尾数等于该数自身的自然数。例如: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 编辑 ]
#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; }
#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"); }