# C program to check number is self-descriptive number or not.

### Problem statement

This program take any number from user and check it is self-descriptive number or not.

### What is self-descriptive number?

A number is called as self-descriptive when the position of digit represents the number of time it appears in that number.
There are so many numbers are self-descriptive.
For example:

Consider 2020,

• position 0 has value 2 and there are two 0s in the number;
• position 1 has value 0 and there are no 1s in the number;
• position 2 has value 2 and there are two 2s in the number;
• position 3 has value 0 and there are zero 3s in the number.

Now consider a self-descriptive number 6210001000,

• contains 6 at position 0, indicating that there are six 0s in 6210001000;
• It contains 2 at position 1, indicating that there are two 1s in 6210001000;
• It contains 1 at position 2, indicating that there is one 2 in 6210001000;
• It contains 0 at position 3, indicating that there is no 3 in 6210001000;
• It contains 0 at position 4, indicating that there is no 4 in 6210001000;
• It contains 0 at position 5, indicating that there is no 5 in 6210001000;
• It contains 1 at position 6, indicating that there is one 6 in 6210001000;
• It contains 0 at position 7, indicating that there is no 7 in 6210001000;
• It contains 0 at position 8, indicating that there is no 8 in 6210001000;
• It contains 0 at position 9, indicating that there is no 9 in 6210001000.

### Program

Output

Help others by sharing the content!

### 1 thought on “C program to check number is self-descriptive number or not.”

1. #include
int main()
{
char str[]=”2020″;
int len=strlen(str);
printf(“%d”,fun(str,len));
return 0;
}
int fun(char str[],int n)
{
int arr[n],freq_arr[n];
int index=0,flag=0;
for(int i=0; i<n; i++)
arr[index++]=(str[i]-'0');
index_frequency(arr,freq_arr,n);
for(int i=0; i<n; i++)
if(freq_arr[i]!=arr[i])
{
flag=1;
break;
}
if(flag==1)
printf("Not Autobiographical Number\n");
else
printf("Auto biographical Number\n");
return;
}
void index_frequency(int arr[],int freq_arr[],int n)
{
int count;
for(int i=0; i<n; i++)
{
count=0;
for(int j=0; j<n; j++)
if(i==arr[j])
count++;

freq_arr[i]=count;
}
}