PTA第3周——7-4A-B

题目:

已知两个数A和B,求A-B的运算结果。

输入格式:

输入包括两个正整数A和B 。(0<A,B≤1e10086)

输出格式:

输出A-B的运算结果。

输入样例1:

3
2

输出样例1:

在这里给出相应的输出。例如:

1

输入样例2:

11102356985410
2356985410235698

输出样例2:

在这里给出相应的输出。例如:

-2345883053250288

题意分析:

解题思路:

具体算法流程:

实现细节(代码):

#include<bits/stdc++.h>
using namespace std;
string a,b;
int t1,t2,t,o,p;
char c[20000],d[20000],ans[20000];//c>d t1>t2
int cmp;
int main() {
	cin>>a>>b;
	t1=a.size();
	t2=b.size();
	for(int i=0; i<t1; i++) a[i]-=48;
	for(int i=0; i<t2; i++) b[i]-=48;
	if(t1>t2) {
		for(int i=1; i<=t1; i++) {
			c[i]=a[t1-i];
		}
		for(int i=1; i<=t2; i++) {
			d[i]=b[t2-i];
		}
	}
	if(t1<t2) {
		for(int i=1; i<=t2; i++) {
			c[i]=b[t2-i];
		}
		for(int i=1; i<=t1; i++) {
			d[i]=a[t1-i];
		}
		int k;
		k=t1;
		t1=t2;
		t2=k;
		cmp=1;
	}
	if(t1==t2) {
		for(int i=0; i<t1; i++) {
			if(b[i]>a[i]) {
				for(int j=1; j<=t1; j++) {
					c[j]=b[t1-j];
					d[j]=a[t1-j];
				}
				cmp=1;
				break;
			}
			if(a[i]>b[i]) {
				for(int j=1; j<=t1; j++) {
					c[j]=a[t1-j];
					d[j]=b[t1-j];
				}
				break;
			}
			if(a[i]==b[i]) o++;
		}
		if(o==t1) p++;
	}
	t=t1;
	for(int i=1; i<=t; i++) { //c-d
		if(c[i]>=d[i]) {
			ans[i]=c[i]-d[i];
		} else {
			int k=i+1;
			while(c[k]==0) {
				c[k]=9;
				k++;
				if(k==t&&(c[k]-1)==0) {
					t--;
				}
			}
			c[k]--;
			ans[i]=c[i]+10-d[i];
		}
	}
	if(p==1) {
		cout<<"0";
	} else {
		if(cmp==1) cout<<"-";
		while(ans[t]==0) t--;
		for(int i=t; i>=1; i--) {
			printf("%d",ans[i]);
		}
	}
	return 0;
}

总结:

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇