欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

B1017刷题

程序员文章站 2022-06-10 14:37:55
...

题目

B1017刷题

思路

没什么好说的,大整数的运算。背好相关代码吧。(以下内容整理自《算法笔记》)
B1017刷题

AC代码

#include <bits/stdc++.h>
using namespace std;

struct bign{
	int a[1001];
	int len=0;
	bign(){
		a[1001]={0};
		len=0;
	}
};
bign change(char s[]){
	bign c;
	int l=strlen(s);
	c.len=l;
	for(int i=0;i<l;i++){
		c.a[l-1-i]=s[i]-'0';
	}
	return c;
}

int r=0;
bign devide(bign a,int b,int & r){
	bign c;
	c.len=a.len;
	for(int i=a.len-1;i>=0;i--){
		r=r*10+a.a[i];
		if(r<b) c.a[i]=0;
		else {
			c.a[i]=r/b;
			r=r%b;
		}
	}
	while(c.len>1&&c.a[c.len-1]==0) c.len--;
	return c;
}

int main(){
	bign a,q;
	int b;
	char s[1001];
	cin>>s>>b;
	a=change(s);
	q=devide(a,b,r);
	for(int i=q.len-1;i>=0;i--) cout<<q.a[i];
	cout<<' '<<r; 
}
相关标签: PAT乙级