#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int calc(unsigned int n);/*计ç®Nçé¶ä¹,è¿å第ä¸ä½éé¶æ°å*/
int count=0;//è®°å½æå¤å°ä¸ª0
int main(void)
{
int i;
i=calc(100);//æ大å¯ä»¥æ±5000çé¶ä¹
cout<<"æå0ç个æ°ï¼"<<count<<endl;
cout<<"第ä¸ä¸ªä¸ä¸º0çæ°æ¯ï¼"<<i<<endl;
system("PAUSE");
return 0;
}
int calc(unsigned int n)/*注æï¼è¿åçæ¯ç¬¬ä¸ä¸ªéé¶æ°å*/
{
const int max = 10000;/*æ°ç»ä¸æ¯ä¸ªå
ç´ åå¨çæ°æ®ä¸è¶
è¿max*/
int array[5000];/*ç¨è¯¥ä¸ªæ°ç»åå¨æ°æ®*/
int arrayNow = 0;/*æ è®°æ°ç»ç¨å°äºç¬¬å ä½*/
unsigned int num=1;/*计ç®é¶ä¹ç¨*/
int first=0;/*ç¨äºè®°å½é¦ä¸ªéé¶æ°*/
int i,j,temp;
int left;/*è¿ä½ç¸å æ°*/
char out[8];
memset(array,0,5000*sizeof(int));/*åå§åæ°ç»*/
if(n<3)/*å°äº3å°±ä¸è®¡ç®äº*/
{
return n;
}
if(n>5000)
{
return -1;
}
array[0] = 1;
while(num<=n)//åå
¥é¶ä¹å°æ°ç»
{
left = 0;/*第0ä½æ²¡æä¸ä¸ä½è¿ä½*/
for(i=0;i<=arrayNow;i++)/*æè®°å½çæ°ç»ä½ç½®é½éè¦ä¹num*/
{
temp = array[i]*(int)num;/*å½åæ°ç»å
ç´ ä¸numç¸ä¹*/
temp+=left; /*å ä¸ä¸ä¸ä¸ªå
ç´ çè¿ä½*/
array[i] = temp%max;/*è®°å½å½åå
ç´ */
left = temp/max;/*è®°å½è¿ä½*/
if(num==n && 0 == first && array[i]!=0)/*æåä¸è¶ä¹æ³æ¶è¿è¡æ¥æ¾ç¬¬ä¸ä¸ªéé¶æ°å*/
{
temp = array[i];
while(0 == first)/*æ¾å½åå
ç´ çéé¶æ°å*/
{
first=temp%10;
temp/=10;
}
}
}
if(left>0)/*å¡«å
æ°ä½*/
{
array[++arrayNow] = left;
}
num++;
}
for(j=0;j<=n;j++)//计ç®0ç个æ°
{
int a=0,b=array[j];
if(array[j]==0)
count+=4;
else
do
{
a=b%10;
if(a==0)
{
count++;
b=b/10;
}
else
break;
}
while(a%10==0);
if(a!=0)break;
}
for(i=arrayNow;i>=0;i--)
{
if(array[i]>=max)
{
printf("åºé\n");
return -1;
}
if(i==arrayNow)
{
printf("%d",array[i]);
}
else
{
printf("%d",array[i]/1000);
printf("%d",array[i]/100 - (array[i]/1000)*10);
printf("%d",(array[i]%100)/10);
printf("%d",array[i]%10);
}
}
printf("\n");
return first;/*è¿å*/
}
温馨提示:答案为网友推荐,仅供参考