《tzoj5024》大数除以小数》
第一次写博客,拿来记录下oj上写的代码,方便以后能回忆。
描述
本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商 数Q和余数R,使得A = B * Q + R成立。
输入
输入在1行中依次给出A和B,中间以1空格分隔。
输出
在1行中依次输出Q和R,中间以1空格分隔。
样例输入
123456789050987654321 7
样例输出
17636684150141093474 3
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
//const int N = 1e5+5;
int main()
{
string s;
int a,t,q,i,m,flag;
cin >> s;
cin >> a;
flag = 0;
//对首位的处理,因为首位没有前一位,故要特别处理.
t = s[0]-‘0’;
if(s.size() == 1)//如果a只有一位
{
printf("%d",t/a);
printf(" %d\n",t%a);
}
else
{
if(t > a)
{
printf("%d",t/a);
q = t%a;
flag = 1;
}
else q = t;
for(i=1;i<s.size();++i)
{
t = s[i]-‘0’;
m = q*10+t;
if(m/a != 0 || flag == 1)//此处为输出的一大坑:如果前面都为0,的话就不要输出0,比如0025,输出应该是25.
{
printf("%d",m/a);
flag = 1;
}
q = m%a;
}
printf(" %d\n",q);
}
}