DIGIT0 - Số 0 tận cùng

Tác giả: skyvn97

Ngôn ngữ: C++

#include<stdio.h>
#include<string.h>
#define MAX   10101
int a[33];
int n;
int n2,n5;
int p2[MAX];
int p5[MAX];
char s[MAX];
void process(void)
{
	int i,j;
	scanf("%s",s);
	n=strlen(s);	
	for (i=1;i<=30;i=i+1) a[i]=0;
	n2=0;
	n5=0;
	for (i=1;i<=n;i=i+1)
		{
			a[s[i-1]-'a'+1]++;
			if (i%2==0) p2[i]=p2[i/2]+1;
			else p2[i]=0;
			if (i%5==0) p5[i]=p5[i/5]+1;
			else p5[i]=0;			
			n2=n2+p2[i];
			n5=n5+p5[i];
		}
	for (i=1;i<=30;i=i+1)
		for (j=1;j<=a[i];j=j+1)
			{
				n2=n2-p2[j];
				n5=n5-p5[j];
			}
	if (n2>n5) printf("%d",n5);
	else printf("%d",n2);
}
int main(void)
{
	process();
}

Download