《tzoj5024》大数除以小数

					《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);
}
}

发布了5 篇原创文章 · 获赞 0 · 访问量 172

猜你喜欢

转载自blog.csdn.net/weixin_45671214/article/details/103959736