"யாரைப் பார்த்து என்ன கேள்வி கேட்கிறாய்?" அப்படினெல்லாம் கோபப்படாதீங்க. உண்மையிலேயே உங்களுக்கு பெருக்கத் தெரியுமா? எங்கே பார்ப்போம். ஒன்னுமில்லை! சாதாரணமா இரண்டு எண்களை பெருக்க வேண்டும். ஆனால் அதை கணினி செய்ய வேண்டும். கணிமொழி அறிந்தவர்கள் "C"யில் எழுதலாம். மற்றவர்கள் என்ன செய்ய வேண்டும் என்று ஒரு Algorithm போல் கொடுக்கலாம். அப்புறம் ஒரு முக்கியமான விஷயம். நீங்கள் அந்த இரு எண்களையும் பெருக்க x குறியையோ, + குறியையோ உபயோகிக்க கூடாது. அதாவது இந்த பெருக்கலில் பெருக்கல் விதிகளையோ, கூட்டல் விதிகளையோ பயன்படுத்தகூடாது(புரியும் என்று நினைக்கிறேன்). இப்போ பெருக்குங்க பார்ப்போம்.
பி.கு.:
இதற்கு ஒன்றுக்கு மேற்பட்ட பதில்கள் உண்டு.
Tuesday, March 14, 2006
பெருக்கல் தெரியுமா?
Subscribe to:
Post Comments (Atom)
14 comments:
int mul (int a, int b)
{
int x;
__asm
{
mov eax, a
imul eax, b
mov x, eax
}
return x;
}
int main ()
{
int a = mul (10, 20);
}
Sorry for being mischievous. Will send you few more answers, if possible.
ஸ்ரூசல்! இதெல்லாம் கொஞ்சம் ஒவரா தெரியலையா?;-)
int mul (int a, int b)
{
int x = 0, i;
for (i = b; i > 0; i --)
{
x -= (-a);
}
return x;
}
Not optimized one. Computation time would be o(n)
this is much better one, in terms of performance
int mul2 (int a, int b)
{
int x = 0, i;
for (i = 0; i < b;)
{
if (i && (i << 1) < b)
{
i <<= 1;
x <<= 1;
}
else
{
x -= (-a);
i ++;
}
}
return x;
}
dramatically reduces time.
n, n / 2, n / 4, n / 16, n / 32, .... 1
I know it involves "shifting", but it's complicated.
The easiest answer is, well, google it :)
http://www.devmaster.net/forums/showthread.php?t=1727
to multiply a and b,
do
( 0 - (0 - a - a -a -a -a .......b times) )
done
(Sorry, I can't use < and > for commenting. So replace all "s by < and >)
#include"stdio.h" Program to
#include"conio.h" multiply two
#include"math.h" nums without *,+
void main(void)
{
int a=6,b=3;
clrscr();
printf("%d * %d = %d",a,b,((a!/(a-1)!) / ((b-1)!/b!) ) );
getch();
}
6*3= (6!/5!) / (2!/3!) = 18
என்னங்க, இதுவும் ஒரு பதில்தானே?
-ஞானசேகர்
ஸ்ரூசல்! உங்கள் இரண்டு விடைகளும் சரிதான். இரண்டாவது ஃபங்ஷன் மூலம் பிராஸஸ் டைம் குறையும்தான். ஆனாலும் அது நமக்கு இப்பொழுது தேவையில்லாதது! பயங்கரமா யோசிக்கிறீங்க!!
பரி! பரீட்சைன்னு வந்தப்புறம் பிட்டடிக்கலாமா?
பாலராஜன்கீதா! உங்கள் விடை சரிதான்.
சிவனடியாருக்கு!,
சூப்பரூ நைனா, ஸ்ரூசலு, பரி, பாலராஜனு, ஞானசேகரு இல்லாம் மன்டய பிச்சு கீழே போட்டிருக்காங்க. ஆனா ஒன் லெவ்லுக்கு யாருமே ஐடியா குட்கலை பாரு!;-)
ஞானசேகர், a! கண்டுபிடிக்க எப்படியும் நீங்கள் பெருக்கல் விதிகளைத்தானே உபயோகப்படுத்தியாக வேண்டும்? மேலும் "C"யில் a! என்று உபயோகப் படுத்தமுடியுமா(எந்த "C" உபயோகித்தீர்கள்?)?
Dim x, y, x1, i, j
x = 5
y = 6
x1 = 0
For i = 1 To x
For j = 1 To y
x1 = x1 - 1
Next
Next
MsgBox (-x1)
VB Version
with no + or *
அன்புள்ள சம்மட்டி,
நன்றிகள்.
(என் யோசனைக்கு VBயில் பின்னூட்டமிட்டதற்கு:-)))
Post a Comment