Решение задачи A-B с Acmp

Без пояснения   Просмотров: 16



Код


    #include<iostream> 

#include<vector> 

using namespace std; 

typedef vector<int> lll; 

	lll readlong(){ lll a; string s; cin>>s; 

	for(int i=s.size()-1; i>=0; --i) 

	a.push_back(s[i]-'0'); 

	return a;} 

void writelong(lll a){ 

	for(int i=a.size()-1; i>=0; --i)cout<<a[i];} 

bool GTlong(lll a,lll b){ 

	if(a.size()>b.size())return true; 

	if(a.size()<b.size())return false; 

	for(int i=a.size()-1; i>=0; --i){ 

		if(a[i]>b[i])return true; 

		if(a[i]<b[i])return false;} 

	return false;} 

lll razlong(lll a, lll b,int &z){ 

	lll c; int i,r=0; 

	if(GTlong(b,a)){z=-1;swap(a,b);}else z=1; 

	for(i=0;i<a.size(); ++i){ 

		r+=a[i];

		if(i<b.size())r-=b[i]; 

		if(r<0){c.push_back(r+10);r=-1;}

		else {c.push_back(r);r=0;}}

while(c.size()>1&&c.back()==0)c.pop_back();  

	return c;} 

int main() { 

	lll a,b,c; int z;

	a=readlong (); b=readlong (); 

	c=razlong(a,b,z);

	if(z<0)cout<<'-';

	writelong(c); 

return 0;}    
        

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться