கண்டு பிடிங்க : - ஒரு ஒம்போது டிஜிட்டு நம்பர் .. 1 முதல் 9 வரை உள்ள எல்லா முழு எண்களும், ஒவ்வொரு எண்ணும் ஒரேமுறை மட்டுமே வருமாறு அமைந்தது..
இடது பக்கம் முதல் n டிஜிட்டுகள 'n 'ஆல வகுத்தா மிச்சம் வராது..
( for all the values of 'n' = 1, 2, 3, 4, 5, 6, 7, 8, & 9 )
உதாரணம்..
'123456789 '
இதுல இடது பக்கம் முதல், வரும் முதல் டிஜிட் 1 , ஒன்னால் வகுபடும், மீதி இல்லாமல்)
முதல் இரண்டு இலக்கங்கள் '12 ' - இரண்டால் வகுபடும்.
ஆனால்..
1234 / 4
308 ஈவு ( quotient ), 2 (remainder ) மீதி வரும்.
1234567 / 7
176366 ஈவு ( quotient ) -- 5 மீதி (remainder ) வரும்.
எனவே அந்த எண் 123456789 கிடையாது..
சரியான எண்னை கண்டுபிடியுங்கள் பார்க்கலாம் ?
இந்த புதிரை எனது நண்பர் ஒருவரும், நானும் சேர்ந்து ஒரு இரவு முழுவதும் கலந்தாலோசித்து விடையை கண்டு பிடித்தோம். அதன் அடுத்த தினம், 'சி' புரோக்ராம் எழுதியும் கண்டுபிடிக்க வகை செய்தேன் ( பன்னிரண்டு ஆண்டுகளுக்கு முன்னர் ).
விடையுடன், அந்த 'சி' புரோக்ராமையும் தருகிறேன், வேண்டுமானால். போர்ட்ரானிலும் பிரோக்ராம் எழுதியுள்ளேன். அல்காரிதம் (வெரி சிம்பிள்) தந்தால் கூடப் போதுமோ ?
இதற்கு ஒரே ஒரு விடைதான் இருக்கிறது.. அது இதான் சிறப்பம்சம்.
விடை கண்டுபிடித்த அனைவருக்கும் வாழ்த்துகள். (ஏதோ.. என்னால முடிஞ்சது)
#include<stdio.h>
main()
{
int i1,i2,i3,i4,i5,i6,i7,i8,i9,n,j1,j2,j3,j4,j5,j6,j7,j8,j9,nn;
j1=1; j2=10; j3=100; j4=1000; j5=10000; j6=100000; j7=1000000; j8=10000000; j9=100000000;
for(i1=1;i1<=9;i1++)
{
for(i2=1;i2<=9;i2++)
{
n=(i2*j1+ i1*j2)%2;
if(n==0)
{
for(i3=1;i3<=9;i3++)
{
n=(i3*j1+ i2*j2+ i1*j3)%3;
if(n==0)
{
for(i4=1;i4<=9;i4++)
{
n=(i4*j1+ i3*j2+ i2*j3+ i1*j4)%4;
if(n==0)
{
for(i5=1;i5<=9;i5++)
{
n=(i5*j1+ i4*j2+ i3*j3+ i2*j4+ i1*j5)%5;
if(n==0)
{
for(i6=1;i6<=9;i6++)
{
n=(i6*j1+ i5*j2+ i4*j3+ i3*j4+ i2*j5+ i1*j6)%6;
if(n==0)
{
for(i7=1;i7<=9;i7++)
{
n=(i7*j1+ i6*j2+ i5*j3+ i4*j4+ i3*j5+ i2*j6+ i1*j7)%7;
if(n==0)
{
for(i8=1;i8<=9;i8++)
{
n=(i8*j1+ i7*j2+ i6*j3+ i5*j4+ i4*j5+ i3*j6+ i2*j7+ i1*j8)%8;
if(n==0)
{
for(i9=1;i9<=9;i9++)
{
nn=(i9*j1+ i8*j2+ i7*j3+ i6*j4+ i5*j5+ i4*j6+ i3*j7+ i2*j8+ i1*j9);
n=nn%9;
if(n==0 && i1!=i2 && i1 != i2 && i1 != i3 && i1 != i4 && i1 != i5 && i1 != i6 && i1 != i7 && i1 != i8 && i1 != i9 && i2 != i3 && i2 != i4 && i2 != i5 && i2 != i6 && i2 != i7 && i2 != i8 && i2 != i9 && i3 != i4 && i3 != i5 && i3 != i6 && i3 != i7 && i3 != i8 && i3 != i9 && i4 != i5 && i4 != i6 && i4 != i7 && i4 != i8 && i4 != i9 && i5 != i6 && i5 != i7 && i5 != i8 && i5 != i9 && i6 != i7 && i6 != i8 && i6 != i9 && i7 != i8 && i7 != i9 && i8 != i9 )
printf("The number is %d \n",nn);
} } } } } } } } } } } } } } } } }
---------------------------------------
இடது பக்கம் முதல் n டிஜிட்டுகள 'n 'ஆல வகுத்தா மிச்சம் வராது..
( for all the values of 'n' = 1, 2, 3, 4, 5, 6, 7, 8, & 9 )
உதாரணம்..
'123456789 '
இதுல இடது பக்கம் முதல், வரும் முதல் டிஜிட் 1 , ஒன்னால் வகுபடும், மீதி இல்லாமல்)
முதல் இரண்டு இலக்கங்கள் '12 ' - இரண்டால் வகுபடும்.
ஆனால்..
1234 / 4
308 ஈவு ( quotient ), 2 (remainder ) மீதி வரும்.
1234567 / 7
176366 ஈவு ( quotient ) -- 5 மீதி (remainder ) வரும்.
எனவே அந்த எண் 123456789 கிடையாது..
சரியான எண்னை கண்டுபிடியுங்கள் பார்க்கலாம் ?
இந்த புதிரை எனது நண்பர் ஒருவரும், நானும் சேர்ந்து ஒரு இரவு முழுவதும் கலந்தாலோசித்து விடையை கண்டு பிடித்தோம். அதன் அடுத்த தினம், 'சி' புரோக்ராம் எழுதியும் கண்டுபிடிக்க வகை செய்தேன் ( பன்னிரண்டு ஆண்டுகளுக்கு முன்னர் ).
விடையுடன், அந்த 'சி' புரோக்ராமையும் தருகிறேன், வேண்டுமானால். போர்ட்ரானிலும் பிரோக்ராம் எழுதியுள்ளேன். அல்காரிதம் (வெரி சிம்பிள்) தந்தால் கூடப் போதுமோ ?
இதற்கு ஒரே ஒரு விடைதான் இருக்கிறது.. அது இதான் சிறப்பம்சம்.
விடை கண்டுபிடித்த அனைவருக்கும் வாழ்த்துகள். (ஏதோ.. என்னால முடிஞ்சது)
#include<stdio.h>
main()
{
int i1,i2,i3,i4,i5,i6,i7,i8,i9,n,j1,j2,j3,j4,j5,j6,j7,j8,j9,nn;
j1=1; j2=10; j3=100; j4=1000; j5=10000; j6=100000; j7=1000000; j8=10000000; j9=100000000;
for(i1=1;i1<=9;i1++)
{
for(i2=1;i2<=9;i2++)
{
n=(i2*j1+ i1*j2)%2;
if(n==0)
{
for(i3=1;i3<=9;i3++)
{
n=(i3*j1+ i2*j2+ i1*j3)%3;
if(n==0)
{
for(i4=1;i4<=9;i4++)
{
n=(i4*j1+ i3*j2+ i2*j3+ i1*j4)%4;
if(n==0)
{
for(i5=1;i5<=9;i5++)
{
n=(i5*j1+ i4*j2+ i3*j3+ i2*j4+ i1*j5)%5;
if(n==0)
{
for(i6=1;i6<=9;i6++)
{
n=(i6*j1+ i5*j2+ i4*j3+ i3*j4+ i2*j5+ i1*j6)%6;
if(n==0)
{
for(i7=1;i7<=9;i7++)
{
n=(i7*j1+ i6*j2+ i5*j3+ i4*j4+ i3*j5+ i2*j6+ i1*j7)%7;
if(n==0)
{
for(i8=1;i8<=9;i8++)
{
n=(i8*j1+ i7*j2+ i6*j3+ i5*j4+ i4*j5+ i3*j6+ i2*j7+ i1*j8)%8;
if(n==0)
{
for(i9=1;i9<=9;i9++)
{
nn=(i9*j1+ i8*j2+ i7*j3+ i6*j4+ i5*j5+ i4*j6+ i3*j7+ i2*j8+ i1*j9);
n=nn%9;
if(n==0 && i1!=i2 && i1 != i2 && i1 != i3 && i1 != i4 && i1 != i5 && i1 != i6 && i1 != i7 && i1 != i8 && i1 != i9 && i2 != i3 && i2 != i4 && i2 != i5 && i2 != i6 && i2 != i7 && i2 != i8 && i2 != i9 && i3 != i4 && i3 != i5 && i3 != i6 && i3 != i7 && i3 != i8 && i3 != i9 && i4 != i5 && i4 != i6 && i4 != i7 && i4 != i8 && i4 != i9 && i5 != i6 && i5 != i7 && i5 != i8 && i5 != i9 && i6 != i7 && i6 != i8 && i6 != i9 && i7 != i8 && i7 != i9 && i8 != i9 )
printf("The number is %d \n",nn);
} } } } } } } } } } } } } } } } }
---------------------------------------