首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

四位寄生虫数字

2012-10-27 
四位吸血鬼数字吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位

四位吸血鬼数字
吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,
而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取
的数字可以任意排序。以两个0结尾的数字是不允许的,例如,下列
数字都是“吸血鬼”数字:
  1260 = 21 * 60
  1827 = 21 * 87
  2187 = 27 * 81
下面是我写的关于求出所有四位吸血鬼数字的代码,请大家看看有没有问题,或者有没有更加高效的算法。

#include<stdio.h>#include<string.h>#include <stdlib.h>int compare(const char* a,const char* b){if(*a>*b){return 1;}else if(*a<*b){return -1;}else{return 0;}}void search(){int i=0,j=0;int temp=0;char buf1[5]={0};char buf2[5]={0};char buf3[3]={0};for(i=10;i<100;i++){for(j=i+1;j<100;j++){temp=i*j;if(temp<1000||temp>9999){continue;}itoa(temp,buf1,10);itoa(i,buf2,10);itoa(j,buf3,10);strcat(buf2,buf3);qsort(buf1,4,1,compare);qsort(buf2,4,1,compare);if(buf1[0]==buf2[0]&&buf1[1]==buf2[1]&&buf1[2]==buf2[2]&&buf1[3]==buf2[3]){printf("%d=%d*%d\n",temp,i,j);}}}}int main(){search();return 0;}

热点排行