P1480 A/B Problem

题目描述

输入两个整数a,b,输出它们的商(a<=10^5000,b<=10^9)

输入输出格式

输入格式:

两行,第一行是被除数,第二行是除数。

输出格式:

一行,商的整数部分

输入输出样例

输入样例#1: 

10
2
输出样例#1: 

5
#include<iostream>
#include<cstring>
using namespace std;
int a[],b[],c[],d,i;
void init(int a[])
{
string s;
cin>>s;
a[]=s.length();
for(i=;i<=a[];i++)
a[i]=s[a[]-i]-'';
}
void numcpy(int p[],int q[],int det)
{
for(int i=;i<=p[];i++)
q[i+det-]=p[i];
q[]=p[]+det-;
}
int compare(int a[],int b[])
{
int i;
if(a[]>b[])
return ;
if(a[]<b[])
return -;
for(i=a[];i>;i--)
{
if(a[i]>b[i])
return ;
if(a[i]<b[i])
return -;
}
return ;
}
void jian(int a[],int b[])
{
int flag,i;
flag=compare(a,b);
if(flag==)
{
a[]=;
return;
}
if(flag==)
{
for(i=;i<=a[];i++)
{
if(a[i]<b[i])
{
a[i+]--;
a[i]+=;
}
a[i]-=b[i];
}
while(a[]>&&a[a[]]==)
a[]--; }
}
void chugao(int a[],int b[],int c[])
{
int i,tmp[];
c[]=a[]-b[]+;
for(int i=c[];i>;i--)
{
memset(tmp,,sizeof(tmp));
numcpy(b,tmp,i);
while(compare(a,tmp)>=)
{
c[i]++;
jian(a,tmp);
}
}
while(c[]>&&c[c[]]==)
c[]--;
}
void printf(int a[])
{
int i;
if(a[]==)
{
cout<<<<endl;
return;
}
for(int i=a[];i>;i--)
cout<<a[i];
cout<<endl;
return;
}
int main()
{
init(a);
init(b);
chugao(a,b,c);
printf(c);
//printf(a);
}
05-12 05:32