#include <stdio.h>
#include <limits.h>
#include <math.h>
#include <string.h>
void StringMul(char *num1,char *num2)
{
char number1[100];
char number2[100];
strcpy(number1,num1);
strcpy(number2,num2);
int i1,i2;
int it;
int m;
int sum=0;
char *s;
char *d;
int pn[200]={0,};
s=number1;
d=s;
while(*d++);
i1=d-s-1;
s=number2;
d=s;
while(*d++);
i2=d-s-1;
it=i1>i2?i1:i2;
m=i1>i2?it-i2:it-i1;
if(i2>i1)
{
for(int l=i1-1;l>=0;l--)
{
number1[l+m]=number1[l];
}
for(int l=0;l<m;l++)
{
number1[l]='0';
}
number1[i1+m]=0;
}
else
{
for(int l=i2-1;l>=0;l--)
{
number2[l+m]=number2[l];
}
for(int l=0;l<m;l++)
{
number2[l]='0';
}
number2[i2+m]=0;
}
for(int i=0;i<it;i++)
{
number2[it*2-2-i]=number2[it-i-1];
number1[it*2-2-i]=number1[it-i-1];
}
for(int i=0;i<it-1;i++)
{
number2[i]='0';
number1[i]='0';
}
for(int i=0;i<it*2-1;i++)
{
int p=(int)pow((double)10,i);
for(int j=0;j<=i;j++)
{
pn[i]+=(number2[(it*2-2)-j]-'0')*(number1[(it*2-2)-i+j]-'0');
}
}
for(int i=0;i<it*2-1;i++)
{
if(pn[i]>9){pn[i+1]+=pn[i]/10; pn[i]=pn[i];}
}
int i=it*2-2;
while(pn[i]==0){i--;}
for(;i>=0;i--)
printf("%d",pn[i]);
}
void main()
{
StringMul("820045672054561123144142","18818857525235801287252353");
printf("\n");
}
존나 쉽내요
atoi랑 itoa함수쓰고 큰숫자는 걍 부분부분 잘라서 하믄 안되나
댓글에는 잘써지는데 글에는 % 안써지네 암튼 if(pn[i]>9){pn[i+1]+=pn[i]/10; pn[i]=pn[i];} 여기에 빠짐
= 이거랑 %랑 같이 쓰니까 %만 사라지네
제목의 중요성 ㄷㄷ