uva 10106 제품 (고밀도 대수 곱셈)
이미 다른 사람의 알고리즘 을 보면 사실 나 와 차이 가 많 지 않 고 모두 이 자세 이다.와 한 번 했 는데 0 을 생각 하 는 것 을 잊 어 버 렸 어 요. 나중에 문 제 를 내기 전에 다 판단 해 야 돼 요.
변두리 데이터, 빅 데이터 와 작은 데 이 터 를 끊 으 세 요. 아니면 괜 히 시간 이 걸 리 거나 변수 가 정 의 를 반복 하지 않도록 주의해 야 합 니 다!!호출 함수 에 있 지 않 으 면 실수 하기 쉬 워!!
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<algorithm>
using namespace std;
char a[300];//
char b[300];//
int c[600];//
int d[600];// b
void solve(char c[])//
{
char t;
int len=strlen(c);
for(int i=0; i<=(len-1)/2; i++)
{
t=c[i];
c[i]=c[len-1-i];
c[len-1-i]=t;
}
}
int main()
{
int i,j,x,k,q,up,up1,max1;
while(scanf("%s%s",a,b)!=EOF)
{
if(strcmp(a,"0")==0||strcmp(b,"0")==0)// 0
{
printf("0
");
continue;
}
memset(d,0,sizeof(d));
memset(c,0,sizeof(c));
solve(a);
solve(b);
int lena=strlen(a);
int lenb=strlen(b);
max1=k=0;
for(i=0;i<lena;i++)// a , b
{
up=0;
for(k=0;k<i;k++)
c[k]=0;
for(j=0;j<lenb;j++)
{
c[k]=(a[i]-'0')*(b[j]-'0')+up;
up=c[k]/10;
c[k]=c[k]%10;
k++;
}
if(up!=0)
c[k++]=up;//c i b
max1=max(max1,k);
for(q=0,up=0;q<max1;q++)
{
if(q>=k)
c[q]=0;
d[q]=c[q]+d[q]+up;
up=d[q]/10;
d[q]=d[q]%10;
}
if(up!=0)
d[max1++]=up;//d i b
}
int flag=1;
for(j=max1-1;j>=0;j--)
{
if(flag==1&&d[j]==0)// 0
continue;
printf("%d",d[j]);
flag=0;
}
printf("
");
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.